Как я связываю со свойством другого управления от триггера?

В моем особом случае я хочу связать со свойством IsReadOnly TextBox для установки свойства Content Кнопки? Они - оба часть того же StackPanel.

Я попытался делать, это с DataTrigger с Привязкой к ElementName TextBox и Триггера с помощью TextBox называет как SourceName.

Какие-либо мысли?

50
задан rrhartjr 25 March 2010 в 14:45
поделиться

2 ответа

Вам необходимо указать триггер как часть стиля - коллекция триггеров на самой кнопке может содержать только триггеры событий. Имея это в виду, DataTrigger работает нормально. Однако есть одна загвоздка: значение из Trigger Setter не будет перезаписывать локальное свойство Content. Таким образом, вы также должны установить контент по умолчанию в стиле. Вот как это выглядит:

<Button>  <!-- Note no content set directly on button -->
  <Button.Style>
    <Style TargetType="Button">
      <Setter Property="Content" Value="You may write!!!" />  <!-- Here is the 'normal' content -->
      <Style.Triggers>
        <!-- Here is how we bind to another control's property -->
        <DataTrigger Binding="{Binding IsReadOnly, ElementName=textBox}" Value="True">
          <Setter Property="Content" Value="NO NO NO" />  <!-- Here is the 'override' content -->
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Button.Style>
</Button>
76
ответ дан 7 November 2019 в 10:58
поделиться

Вы пробовали это:

<StackPanel x:Name="LayoutRoot">
    <Button Width="75" Content="{Binding IsReadOnly, ElementName=textBox, Mode=Default}" />
    <TextBox x:Name="textBox" VerticalAlignment="Top" Text="TextBox" />
</StackPanel>

??

8
ответ дан 7 November 2019 в 10:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: