更新切换按钮时会检查其中之一的状态

时间:2018-12-26 06:22:27

标签: c# wpf infragistics

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

使用RadioButton代替ToggleButton是理想的解决方案。但是可能没有记录是默认记录。因此,我希望有一种解决方案,当其中一个默认字段变为true时,将其他默认字段设置为false。

字段的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));
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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