Группа кнопок-переключателей WPF Как включить TextBox, когда выбран какой-либо элемент? - PullRequest
0 голосов
/ 09 ноября 2018

У меня нет проблем с получением этой функциональности для работы с текстовыми полями и комбинированными списками, просто привязав свойство IsEnabled элемента управления, который я хочу оставить скрытым, пока что-то не будет выбрано со свойством .Text, например:

<Label Content="Please Select the status for this client:" Margin="0,0,65,0" IsEnabled="{Binding CBCustomer.Text}" />

Так что в основном этот элемент не будет отображаться, пока кто-то не выберет что-либо в ComboBox.

Как мне получить такую ​​же функциональность для работы с группой радиокнопок? По сути, у меня есть стековая панель, которую я хочу, чтобы свойство IsEnabled (показанное как XXXXXX) было привязано к логическому значению того, была ли выбрана какая-либо кнопка.

  <StackPanel Orientation="Horizontal" Canvas.Left="54"  Canvas.Top="40" Margin="0,0,0,50">
            <Label Content="Please Select the RAG Status for this client:" Margin="0,0,65,0" IsEnabled="{Binding CBCustomer.Text}" />
            <RadioButton GroupName="RAGGroup" Margin="0,8,0,0" Background="Red" Foreground="Red" IsEnabled="{Binding CBCustomer.Text}">Red</RadioButton>
            <RadioButton GroupName="RAGGroup" Margin="10,8,0,0" Background="DarkGoldenrod" Foreground="DarkGoldenrod" IsEnabled="{Binding CBCustomer.Text}">Amber</RadioButton>
            <RadioButton GroupName="RAGGroup" Margin="10,8,0,0" Background="Green" Foreground="Green" IsEnabled="{Binding CBCustomer.Text}">Green</RadioButton>
        </StackPanel>

  <StackPanel Margin="55,80,0,0" IsEnabled="{Binding XXXXXXX}">

Использовать Multi-Binding? Я вижу примеры, которые показывают, как вернуть значение с кнопки, которая была выбрана, но мне все равно, мне просто нужно посмотреть, было ли выбрано значение или нет.

1 Ответ

0 голосов
/ 09 ноября 2018

Если вы хотите связать с другими элементами, вы можете использовать DataTriggers:

<RadioButton x:Name="RB1"/>
<RadioButton x:Name="RB2"/>
<RadioButton x:Name="RB3"/>
<StackPanel>
    <StackPanel.Style>
        <Style TargetType="StackPanel">
            <Setter Property="IsEnabled" Value="False"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=RB1, Path=IsChecked}" Value="True">
                    <Setter Property="IsEnabled" Value="True"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=RB2, Path=IsChecked}" Value="True">
                    <Setter Property="IsEnabled" Value="True"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=RB3, Path=IsChecked}" Value="True">
                    <Setter Property="IsEnabled" Value="True"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Style>
</StackPanel>

Но я почти всегда привязываюсь к слою данных, как:

<RadioButton IsChecked="{Binding RAG, Converter=...}"/>
<RadioButton IsChecked="{Binding RAG, Converter=...}"/>
<RadioButton IsChecked="{Binding RAG, Converter=...}"/>
<StackPanel>
    <StackPanel.Style>
        <Style TargetType="StackPanel">
            <Setter Property="IsEnabled" Value="True"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding RAG}" Value="{x:Null}">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Style>
</StackPanel>
...