WPF中的条件句

WPF中的条件句,wpf,Wpf,我有以下问题:配置文件中有一个布尔变量。如果它是真的,我希望textbox控件中的属性根据该变量的值进行设置。 尝试上面的解决方案,但它不起作用。我做错了什么? 这是一段代码: bool isKeyboardAvtive = true; //read from configuration file <Style x:Key="StylesTextBox" TargetType="{x:Type TextBox}"> <Style.Triggers>

我有以下问题:配置文件中有一个布尔变量。如果它是真的,我希望textbox控件中的属性根据该变量的值进行设置。 尝试上面的解决方案,但它不起作用。我做错了什么? 这是一段代码:

bool isKeyboardAvtive = true; //read from configuration file

<Style x:Key="StylesTextBox" TargetType="{x:Type TextBox}">
      <Style.Triggers>
          <DataTrigger Binding="{Binding Path=isKeyboardActive}" Value="True">
               <Setter Property="k:TouchScreenKeyboard.TouchScreenKeyboard" Value="True"></Setter>
          </DataTrigger>
          <DataTrigger Binding="{Binding Path=isKyboardActive}" Value="False">
               <Setter Property="k:TouchScreenKeyboard.TouchScreenKeyboard" Value="False"></Setter>
          </DataTrigger>
      </Style.Triggers>
</Style>

<TextBox Style="{StaticResource StylesTextBox}" Margin="0,5" x:Name="txtUserName" Height="40"  Width="150" />
bool iskeyboardavctive=true//从配置文件读取

IsKeyboardActive
必须是
DataContext
的公共属性,绑定才能工作。此外,您不需要触发器,只需要绑定:

k:TouchScreenKeyboard.TouchScreenKeyboard="{Binding IsKeyBoardActive}"
如果使用标准VS生成的设置,还可以直接绑定到设置:

xmlns:prop="clr-namespace:YourApplication.Properties"
...

k:TouchScreenKeyboard.TouchScreenKeyboard="{Binding IsKeyBoardActive, Source={x:Static prop:Settings.Default}}"
或者更好,使用:

xmlns:local="clr-namespace:YourApplication"
...

k:TouchScreenKeyboard.TouchScreenKeyboard="{local:SettingBinding IsKeyBoardActive}"