1

単純な条件付きのtbDestinationTableNameという名前のテキストボックスがあります。これは、ComboBoxcbConnectionから選択が行われた場合にのみユーザー入力を許可する必要があります。私は現在、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 に答える