代码之家  ›  专栏  ›  技术社区  ›  Abhishek nazim hatipoglu

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

  •  2
  • Abhishek nazim hatipoglu  · 技术社区  · 6 年前

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

    使用 RadioButton 而不是 切换按钮 将是理想的解决方案。但有可能没有一个记录是默认的。所以我想要一个解决方案,当其中一个字段变为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 回复  |  直到 6 年前
        1
  •  0
  •   UnbreakableMystic    6 年前

    可以使用相同的事件处理程序选中和取消选中切换按钮事件。 然后放置一个if条件(if toggle“isChecked)”选中的代码“else”未选中的代码