c# - 如何根据 ComboBox 中选择的项目将 TextBox 设为只读?
问题描述
如果你能帮助我,我会非常感激,谢谢!
这是 XAML
<ComboBox Margin="8" Name="cmbox" SelectionChanged="cmbox_SelectionChanged" >
<ComboBoxItem IsSelected="True">ESCALONADO</ComboBoxItem>
<ComboBoxItem>INTEGRAL</ComboBoxItem>
</ComboBox>
<TextBox IsReadOnly="{Binding Testcmb}" Grid.Column="1" Margin="8"/>
这是后面的代码的一小部分
我尝试根据组合框上的选定项来属性属性 Testcmb 的值,然后绑定到文本框以将其变为 IsReadOnly="true"。辛税是对的吗?
private void cmbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(cmbox.SelectedIndex > 0)
{
(Object).Testcmb = true;
}
else
{
(Object).Testcmb = false;
}
}
private bool _testcmb;
public bool Testcmb
{
get { return _testcmb; }
set
{
if (this._testcmb != value)
{
this._testcmb = value;
this.NotifyPropertyChanged("Testcmb");
};
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
解决方案
欢迎来到 StackOverflow。您的语法确实是正确的,但是您将数据绑定与事件处理程序混合在一起,并且所有这些都在视图的代码隐藏中。
对于我来说,你可以做你想做的事情Style
,这对于这种 UI 逻辑来说更清楚。这是仅限 XAML 的解决方案:
<ComboBox x:Name="cbox">
<ComboBoxItem IsSelected="True" Content="ESCALONADO"/>
<ComboBoxItem Content="INTEGRAL" />
</ComboBox>
<TextBox Text="Some text...">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="IsReadOnly" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedIndex, ElementName=cbox}" Value="0">
<Setter Property="IsReadOnly" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
推荐阅读
- .net - 如何检查认知搜索中是否存在索引?
- excel - Excel中表的同一列上的多个排序
- angular - 使用材料滑块在折线图(highcharts)上选择带有工具提示的动态值
- sql - 如何编写 SQL 查询以将两个不同的日期列与日期维度表连接起来
- python - 将嵌套字典列表转换为数据框内的集合
- php - PHP - 数组中的数组中的数组,等等
- mysql - 一张mysql表的一列相邻行之间的时间差
- java - PDFBox:将图像从 JAR 资源加载到 PDF
- javascript - HTTP DELETE 的 RESTful API 不检查 null
- c - 我在 for 循环中做错了什么?