Условные выражения в WPF - PullRequest
0 голосов
/ 31 мая 2010

У меня следующий вопрос: у меня есть логическая переменная в файле конфигурации. Если это правда, я хочу, чтобы свойство в элементе управления 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" />

1 Ответ

1 голос
/ 31 мая 2010

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}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...