如何根据组合框中选择的项目使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逻辑来说更清楚,对我来说也是如此

<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>

最新更新