@@ -314,8 +314,11 @@ The [IconTemplate](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Tools.C
314314 xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
315315 mc:Ignorable="d"
316316 Title="MainWindow" Height="450" Width="800">
317+ <Window.DataContext>
318+ <local:Model/>
319+ </Window.DataContext>
317320 <Window.Resources>
318- <DataTemplate x:Key="newIcon ">
321+ <DataTemplate x:Key="checkedIcon ">
319322 <Grid Width="12" Height="16">
320323 <Path
321324 Margin="0.5"
@@ -328,7 +331,7 @@ The [IconTemplate](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Tools.C
328331 Stretch="Fill" />
329332 </Grid>
330333 </DataTemplate>
331- <DataTemplate x:Key="OpenIcon ">
334+ <DataTemplate x:Key="unCheckedIcon ">
332335 <Grid Width="16" Height="16">
333336 <Path
334337 Margin="0.5,0.5,0.738,0.502"
@@ -341,12 +344,12 @@ The [IconTemplate](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Tools.C
341344 Stretch="Fill" />
342345 </Grid>
343346 </DataTemplate>
344- <local:Model x:Key="IconTemp" NewIcon ="{StaticResource newIcon }" OpenIcon ="{StaticResource OpenIcon }"/>
347+ <local:IconTemplateSelector x:Key="IconTemp" CheckedIcon ="{StaticResource checkedIcon }" UnCheckedIcon ="{StaticResource unCheckedIcon }"/>
345348 </Window.Resources>
346349 <Grid>
347350 <StackPanel VerticalAlignment="Center">
348- <CheckBox Name="Check" IsChecked="{Binding IsChecked}" HorizontalAlignment="Center" Content="ChangeIcon"/>
349- <syncfusion:ButtonAdv HorizontalAlignment="Center" Margin="10" Content="{Binding IsChecked}" Label="IconTemplateSelector" IconTemplateSelector="{StaticResource IconTemp}" DataContext="{Binding IsChecked }"/>
351+ <CheckBox Name="Check" IsChecked="{Binding IsChecked}" Checked="Check_Checked" Unchecked="Check_Unchecked" HorizontalAlignment="Center" Content="ChangeIcon"/>
352+ <syncfusion:ButtonAdv x:Name="button" HorizontalAlignment="Center" Margin="10" Content="{Binding IsChecked}" Label="IconTemplateSelector" IconTemplateSelector="{StaticResource IconTemp}"/>
350353 </StackPanel>
351354 </Grid>
352355 </Window >
@@ -355,35 +358,87 @@ The [IconTemplate](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Tools.C
355358
356359 {% highlight c# %}
357360
358- public class Model : DataTemplateSelector,INotifyPropertyChanged
361+ public partial class MainWindow : Window
359362 {
360- public DataTemplate NewIcon { get; set; }
361- public DataTemplate OpenIcon { get; set; }
362- private bool _isChecked;
363- public event PropertyChangedEventHandler PropertyChanged;
364- public bool IsChecked
365- {
366- get => _isChecked;
367- set
363+ public MainWindow()
368364 {
369- if (_isChecked != value)
370- {
365+ InitializeComponent();
366+ }
367+
368+ private void Check_Unchecked(object sender, RoutedEventArgs e)
369+ {
370+ SetIconTemplateSelector();
371+ }
372+
373+ private void Check_Checked(object sender, RoutedEventArgs e)
374+ {
375+ SetIconTemplateSelector();
376+ }
377+
378+ private void SetIconTemplateSelector()
379+ {
380+ var templateSelector = new IconTemplateSelector
381+ {
382+ CheckedIcon = (DataTemplate)this.Resources["CheckedIcon"],
383+ UnCheckedIcon = (DataTemplate)this.Resources["UnCheckedIcon"]
384+ };
385+ button.IconTemplateSelector = templateSelector;
386+ }
387+ }
388+
389+ public class Model
390+ {
391+ private bool _isChecked;
392+ public bool IsChecked
393+ {
394+ get { return _isChecked; }
395+ set
396+ {
397+ if (_isChecked != value)
398+ {
371399 _isChecked = value;
372- OnPropertyChanged(nameof(IsChecked));
373- }
400+ }
401+ }
374402 }
375- }
376- protected void OnPropertyChanged(string propertyName) =>
377- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
403+ }
378404
379- public override DataTemplate SelectTemplate(object item, DependencyObject container)
380- {
381- if (item is bool isChecked)
405+ public class ViewModel : INotifyPropertyChanged
406+ {
407+ private Model _model;
408+ public event PropertyChangedEventHandler PropertyChanged;
409+ public ViewModel()
410+ {
411+ _model = new Model();
412+ }
413+ public bool IsChecked
382414 {
383- return isChecked ? NewIcon : OpenIcon;
415+ get => _model.IsChecked;
416+ set
417+ {
418+ if (_model.IsChecked != value)
419+ {
420+ _model.IsChecked = value;
421+ OnPropertyChanged(nameof(IsChecked));
422+ }
423+ }
424+ }
425+
426+ protected void OnPropertyChanged(string propertyName) =>
427+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
428+ }
429+
430+ public class IconTemplateSelector : DataTemplateSelector
431+ {
432+ public DataTemplate CheckedIcon { get; set; }
433+ public DataTemplate UnCheckedIcon { get; set; }
434+ public override DataTemplate SelectTemplate(object item, DependencyObject container)
435+ {
436+ if (item is Model model)
437+ {
438+ return model.IsChecked ? CheckedIcon : UnCheckedIcon;
439+ }
440+ return base.SelectTemplate(item, container);
384441 }
385- return base.SelectTemplate(item, container);
386- }
387442 }
388443
389444 {% endhighlight %}
0 commit comments