Skip to content

Commit 6d1fbda

Browse files
committed
Updated
1 parent 7449370 commit 6d1fbda

File tree

1 file changed

+82
-27
lines changed

1 file changed

+82
-27
lines changed

wpf/Button/Getting-Started.md

Lines changed: 82 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)