首页 > 解决方案 > 当其中一个被切换时更新切换按钮检查状态

问题描述

我有一个带有 2 个字段的 XamDataGrid。在第二个字段中,我有切换按钮。单击时ToggleButton,值会正确设置。但在任何时候,用户都应该能够检查ToggleButton所有记录中的一个。默认属性的设置逻辑中的数据工作正常。但我需要为 DataSource 中的其他项目设置默认值。

使用 aRadioButton而不是ToggleButton将是理想的解决方案。但有可能没有任何记录是默认的。所以我想要一个解决方案,当其中一个变为真时,使其他默认字段为假。

字段的 XAML:

<igWPF:Field Name="Default" Width="84">
    <igWPF:Field.Settings>
        <igWPF:FieldSettings CellValuePresenterStyle="{StaticResource ButtonDefault}" />
    </igWPF:Field.Settings>
</igWPF:Field>

CellValuePresenterStyle 的 XAML:

<Style x:Key="ButtonDefault" TargetType="{x:Type igWPF:CellValuePresenter}" >
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type igWPF:CellValuePresenter}">
                <ToggleButton Content="Default" 
                              HorizontalAlignment="Center" 
                              VerticalAlignment="Center" 
                              FontSize="16" 
                              Width="80" 
                              Height="36"
                              IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

数据源:

public class LanguageSettingItem : INotifyPropertyChanged
{
    private string name;

    private bool isDefault;

    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get { return this.name; }
        set { this.name = value; PropChanged("Name"); }
    }
    public bool Default 
    {
        get { return this.isDefault; }
        set { this.isDefault= value; PropChanged("Default"); }
    }

    public void PropChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

标签: c#wpfinfragistics

解决方案


您可以使用相同的事件处理程序选中和取消选中切换按钮事件。然后只需输入一个 if 条件 - (if toggle_btn.isChecked)'checked code' else 'unchecked code'


推荐阅读