1

我有一个简单的条件,一个名为 tbDestinationTableName 的文本框,当从 ComboBox cbConnection 进行任何选择时,它应该只允许用户输入。我目前在 codeBehind 中执行此操作。如果可以在 XAML 中完成,有人可以更正以下代码吗?

<ComboBox x:Name="cbConnection"
                  ItemsSource="{Binding Source={StaticResource XmlConnectionList}, XPath=//ComboItem}"
                  DisplayMemberPath="Key"
                  SelectedValuePath="Value"
                  SelectedValue="{Binding Path=ConnectionString,ValidatesOnDataErrors=True,UpdateSourceTrigger=PropertyChanged}" 
                  Margin="{StaticResource ConsistentMargins}"
                  />

<kit:WatermarkTextBox Name="tbDestinationTableName" Margin="{StaticResource ConsistentMargins}"
                  TextChanged="tbDestinationTableName_TextChanged"
                  Text="{Binding Path=DestinationTableName, UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}"
                  Watermark="Destination Table"
                  IsEnabled="{Binding Path=ValidCreate}"/>
4

1 回答 1

2

我相信你可以用你的自定义文本框做这样的事情

<kit:WatermarkTextBox>
    <kit:WatermarkTextBox.Style>
        <Style TargetType="{x:Type kit:WatermarkTextBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=cbConnection, Path=SelectedIndex}" Value="-1">
                    <Setter Property="IsReadOnly" Value="True"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </kit:WatermarkTextBox.Style>
</kit:WatermarkTextBox>

如果您想改用 IsEnabled,则不应在 kit:WatermarkTextBox 的 xaml 中设置它。

只需像这样使用另一个 Datatrigger:

   <kit:WatermarkTextBox Name="tbDestinationTableName" Margin="{StaticResource ConsistentMargins}"                     
                TextChanged="tbDestinationTableName_TextChanged"
                Text="{Binding Path=DestinationTableName, UpdateSourceTrigger=PropertyChanged,ValidatesOnDataErrors=True}"
              Watermark="Destination Table">
    <kit:WatermarkTextBox.Style>
        <Style TargetType="{x:Type kit:WatermarkTextBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=cbConnection, Path=SelectedIndex}" Value="-1">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=ValidCreate}" Value="False">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </kit:WatermarkTextBox.Style>
</kit:WatermarkTextBox>
于 2013-01-25T17:28:09.057 回答