gpt4 book ai didi

c# - XAML 使用单选按钮启用和禁用具有数据绑定(bind)的文本框

转载 作者:行者123 更新时间:2023-11-30 19:57:27 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何启用和禁用带有单选按钮和数据绑定(bind)的文本框。似乎我应该能够将文本框 IsEnabled 绑定(bind)到一个 bool 值并修改该值,但我不能完全让它工作。我想要几组单选按钮和文本框,所以我想要一种通用的方法来处理这个问题。我尝试使用转换器,但由于我没有使用任何 x:Names,所以我不确定这些在这种情况下是否有用。我可以让他们启用/禁用单选按钮,但这不是我想要做的。我的代码主要显示了我为第一个文本框尝试的解决方案。

Xaml 代码

    <Grid>
<StackPanel>
<RadioButton GroupName="grp1" Content="Enable TextBox" IsEnabled="{Binding Bttn1, Mode=TwoWay}" IsChecked="{Binding Bttn1}" Checked="RadioButton_Checked" Unchecked="RadioButton_UnChecked" />
<RadioButton GroupName="grp1" Content="Disable TextBox" IsEnabled="{Binding Bttn2}" />
<TextBox IsEnabled="{Binding Txtbx1, Mode=TwoWay}" BindingGroup="{Binding grp1}" ></TextBox>

<RadioButton GroupName="grp2" Content="Enable TextBox" IsEnabled="{Binding Bttn3, Mode=TwoWay}" IsChecked="{Binding Bttn3}" Checked="RadioButton_Checked" Unchecked="RadioButton_UnChecked" />
<RadioButton GroupName="grp2" Content="Disable TextBox" IsEnabled="{Binding Bttn4}" />
<TextBox IsEnabled="{Binding Txtbx2, Mode=TwoWay}" BindingGroup="{Binding grp2}" ></TextBox>
</StackPanel>
</Grid>

View 模型代码

    private bool _bttn1;
private bool _bttn2;
private bool _bttn3;
private bool _bttn4;
private bool _txtbx1;
private bool _txtbx2;

public bool Bttn1
{
get
{
return(_bttn1);
}

set
{
_bttn1 = value;
_txtbx1 = false;
RaisePropertyChanged(Txtbx1.ToString());
}

}

public bool Bttn2
{
get
{
return (_bttn1);
}

set
{
_bttn1 = value;
_txtbx1 = false;
RaisePropertyChanged(Txtbx1.ToString());
}

}

public bool Txtbx1
{
get
{
return (_txtbx1);
}

set
{
_txtbx1 = false;
}
}

再往下我有

    public event PropertyChangedEventHandler PropertyChanged;

protected void RaisePropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}


private void RadioButton_Checked(object sender, RoutedEventArgs e)
{
Handle(sender as RadioButton);
}

private void RadioButton_UnChecked(object sender, RoutedEventArgs e)
{
Handle(sender as RadioButton);
}


void Handle(RadioButton radioButton)
{
bool flag = radioButton.IsChecked.Value;

this.Title = "IsChecked = " + flag.ToString();

}

public class RadioConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)parameter;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value ? parameter : null;
}

}

最佳答案

如果您想启用和禁用带有单选按钮的文本框,此解决方案有效:

 <Grid>
<StackPanel>
<RadioButton x:Name="RB1" GroupName="grp1" Content="Enable TextBox" />
<RadioButton GroupName="grp1" Content="Disable TextBox" />
<TextBox IsEnabled="{Binding IsChecked, ElementName=RB1}" ></TextBox>

<RadioButton x:Name="RB2" GroupName="grp2" Content="Enable TextBox" />
<RadioButton GroupName="grp2" Content="Disable TextBox" />
<TextBox IsEnabled="{Binding IsChecked, ElementName=RB2}" ></TextBox>
</StackPanel>

关于c# - XAML 使用单选按钮启用和禁用具有数据绑定(bind)的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com