Связывание двух пользовательских элементов управления с помощью MultiDataTrigger - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть следующий фрагмент кода, чтобы включить привязку для условия MultiDataTrigger.

  <StackPanel Grid.Column="2">
        <Expander IsExpanded="True" x:Name="test1">
            <TextBlock Text="In Expander test1" />
        </Expander>
        <StackPanel Orientation="Vertical"  VerticalAlignment="Top">
            <views:BarPartDefView x:Name="Exp11" DataContext="{Binding CurrentPartVM}" />
        </StackPanel>
        <GridSplitter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="4" >
            <GridSplitter.Style>
                <Style TargetType="GridSplitter">
                    <Setter Property="Visibility" Value="Collapsed"/>
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=test1,  Path=IsExpanded}" Value="True" />
                                <Condition Binding="{Binding ElementName=Exp11,  Path=IsExpanded}" Value="True" />
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible" />
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </GridSplitter.Style>
        </GridSplitter>
    </StackPanel>

У меня есть следующий фрагмент кода в другом файле XAML.

 <UserControl.Style>
        <Style TargetType="local:BarPartDefView">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding ElementName=Exp1, Path=IsExpanded}" Value="False"/>
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsExpanded" Value="False"/>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </UserControl.Style>

    <StackPanel>
        <Expander IsExpanded="False" x:Name="Exp2">
            <TextBlock Text="In Expander part 1 " />
        </Expander>
        <Expander IsExpanded="False" x:Name="Exp1">
            <TextBlock Text="In Expander part 2" />
        </Expander>
    </StackPanel>

IЯ создал свойство зависимости для класса BarPartDefView.

public static DependencyProperty IsExpandedProperty = DependencyProperty.Register(
        "IsExpanded",
        typeof(Boolean),
        typeof(BarPartDefView),
        new FrameworkPropertyMetadata {
        BindsTwoWayByDefault = false,
        DefaultValue = true,
        DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
        PropertyChangedCallback = (sender, e) => {
            var i = 0;
        }});
public bool IsExpanded
{
    get { return (bool)GetValue(IsExpandedProperty); }
    set { SetValue(IsExpandedProperty, value); }
}

Я не могу связать второе условие MultiDataTrigger, равное

<Condition Binding="{Binding ElementName=Exp11,  Path=IsExpanded}" Value="True" />

Я нашел решение в Интернете, но онопривязывает только имя элемента в том же пользовательском элементе управления.Я хочу привязать имя элемента в другом пользовательском элементе управления.Как я могу это сделать.Возможно ли иметь такую ​​привязку?Так как я относительно новичок в wpf, я изучаю все возможные способы сделать это.было бы очень полезно, если бы вы могли мне помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...