标签: multitrigger

MultiDataTrigger与具有多重绑定的DataTrigger

我遇到了一个情况,我可以用它来轻松实现相同的功能MultiDataTrigger,或者交替,使用DataTriggerMultiBinding.是否有任何实质性理由偏好一种方法而不是另一种方法?

使用MultiDataTrigger:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=SomePath}" Value="SomeValue"/>
        <Condition Binding="{Binding Path=SomeOtherPath, Converter={StaticResource SomeConverter}}" Value="SomeOtherValue"/>
    </MultiDataTrigger.Conditions>
    <MultiDataTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource MyStoryboard}"/>
    </MultiDataTrigger.EnterActions>
</MultiDataTrigger>
Run Code Online (Sandbox Code Playgroud)

使用MultiBinding:

<DataTrigger Value="foo">
    <DataTrigger.Binding>
        <MultiBinding Converter="{StaticResource fooConv}"/>
            <Binding Path=SomePath/>
            <Binding Path=SomeOtherPath/>
        </MultiBinding>
    </DataTrigger.Binding>
    <DataTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource MyStoryboard}"/>
    </DataTrigger.EnterActions>
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)

wpf datatrigger multitrigger multibinding

29
推荐指数
2
解决办法
2万
查看次数

带有MultiBinding的WPF TextBox.Text

我在默认模板中使用TextBox进行自定义控制.自定义控件具有以下2个依赖项属性(以及其他属性):

SelectedValue,NullText(当没有选择任何内容并提供值时,文本将显示在TextBox中)

我想在null为null 时将TextBox.Text设置为NullText值.SelectedValueNullText

<TextBox.Text>                                              
 <MultiBinding Converter="{StaticResource myConverter}">
   <Binding RelativeSource="TemplatedParent" Path="SelectedValue"/>
   <Binding RelativeSource="TemplatedParent" Path="NullText"/>
 </MultiBinding>                                              
</TextBox.Text>
Run Code Online (Sandbox Code Playgroud)

我有一个IMultiValueConverter:

public class MyConverter : IMultiValueConverter
{}
Run Code Online (Sandbox Code Playgroud)

有了这个XAML定义,我得到'type没有公共TypeConverter类'Exception

你好吗?

wpf triggers textbox controltemplate multitrigger

8
推荐指数
1
解决办法
2万
查看次数

WPF:条件绑定与属性,使用XamlParseException

我遇到麻烦ConditionMultiTrigger.如果我执行以下操作:

<Condition Binding="{Binding RelativeSource={RelativeSource
    AncestorType={x:Type ListView}}}" Property="IsEnabled" Value="True"/>
Run Code Online (Sandbox Code Playgroud)

然后我得到这个例外:

条件不能同时使用Property和Binding.标记文件中对象'System.Windows.Condition'出错

但是,当我执行以下操作时:

<Condition Binding="{Binding RelativeSource={RelativeSource
    AncestorType={x:Type ListView}}, Path=IsEnabled}" Value="True"/>
Run Code Online (Sandbox Code Playgroud)

然后我得到这个例外:

必须为Trigger指定Property和Value.标记文件中对象'System.Windows.Condition'出错

是什么赋予了?如果重要,这是整个触发器:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Binding="{Binding Path=IsSelected}" Value="True"/>
        <Condition Binding="{Binding Path=ItemsControl.AlternationIndex}"
                   Value="0"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource
            AncestorType={x:Type ListView}}, Path=IsEnabled}"
                   Value="True"/>
    </MultiTrigger.Conditions>
    <Setter Property="Background"
            Value="{StaticResource evenSelected}" />
    <Setter Property="BorderBrush"
            Value="{StaticResource evenSelectedBorder}" />
</MultiTrigger>
Run Code Online (Sandbox Code Playgroud)

wpf xaml binding triggers multitrigger

5
推荐指数
1
解决办法
9757
查看次数

MultiTrigger:条件绑定到DependencyProperty不起作用

我有一个MainMenuButton类型的自定义按钮UserControl和atm我正在设计它.现在我想实现一个MultiTrigger只在满足两个条件时才改变按钮的外观.

第一个条件是if IsMouseOver == true.我简单地说如下Condition:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <Setter TargetName="LayoutRoot" Property="Background" Value="Red">
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <Setter TargetName="LayoutRoot" Property="Background" Value="Black">
    </MultiTrigger.ExitActions>
</MultiTrigger>
Run Code Online (Sandbox Code Playgroud)

第二个条件与a DependencyProperty:

public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(MainMenuButton), new PropertyMetadata(false));
Run Code Online (Sandbox Code Playgroud)

在另一个SO帖子中,用户说我可以DataTrigger用来做出反应IsCheckedProperty.所以我尝试了其他帖子的代码,但它不起作用:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True"/>
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsChecked}" Value="False"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource MouseEnter}"/>
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource MouseLeave}"/>
    </MultiTrigger.ExitActions>
</MultiTrigger>
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题?谢谢你的回答!:)

c# wpf dependency-properties multitrigger

5
推荐指数
1
解决办法
7960
查看次数