标签: datatrigger

MVVM模式的动画

使用MVVM模式时触发动画的最佳方法是什么?更具体地说,我的表格有几个字段.当用户点击保存时Button,我想显示一个动画.我已经能够通过暴露属性ShowMessage并将其设置为True 来实现这一点,并DataTrigger获取此值并启动动画.但是,当动画仍处于活动状态时,我想将表单重置为干净状态.到目前为止,我通过订阅Complete事件Storyboard并重置视图模型在该事件上的状态来完成重置.

理想情况下,我希望能够以某种方式从视图模型触发动画(因为保存将是一个异步操作)并让动画运行完成.我现在拥有它的方式不起作用,因为一旦我更改了ShowMessage属性的值(在重置时),动画就会停止并且不会运行完成.

有没有人有更好的解决方案?

谢谢!

wpf animation datatrigger mvvm storyboard

7
推荐指数
1
解决办法
2481
查看次数

WPF:如何使用DataTrigger设置TextBlock的Foreground属性

这是我的XAML:

<TextBlock Name="SeverityText"
           Grid.Column="1"
           Grid.Row="0"
           Foreground="Red">
    <TextBlock.Triggers>

        <DataTrigger Binding="{Binding Path=Severity}">
            <DataTrigger.Value>
                <sm:Severity>Warning</sm:Severity>
            </DataTrigger.Value>
            <Setter TargetName="SeverityText"
                    Property="Foreground"
                    Value="Yellow" />
        </DataTrigger>
                 <DataTrigger Binding="{Binding Path=Severity}">
            <DataTrigger.Value>
                <sm:Severity>Information</sm:Severity>
            </DataTrigger.Value>
            <Setter TargetName="SeverityText"
                    Property="Foreground"
                    Value="White" />
        </DataTrigger>


    </TextBlock.Triggers>
    <TextBlock>Severity:</TextBlock>
    <TextBlock Text="{Binding Path=Severity}" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

这是我的错误消息:

在"ContentPresenter"类型上找不到静态成员"ForegroundProperty".

sm:严重性是我导入的枚举.

wpf datatrigger textblock foreground

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

在Xaml绑定中切换(选择)语句?

有没有办法在XAML中创建条件绑定?

例:

<Window x:Name="Me" DataContext="{Binding ElementName=Me}">
    <TextBlock>
        <TextBlock.Text>
            <SelectBinding Binding="{Binding MyValue}">
                <Case Value="Value1" Value="value is 1!">                
                <Case Value="Value2" Value="value is 2!">                
                <Case Value="Value3" Value="value is 3!">                
            </SelectBinding >
        </TextBlock.Text>
    </TextBlock>
</Window>
Run Code Online (Sandbox Code Playgroud)

最重要的是,我想根据另一个值来设置TextBlock值,该值Binding可以是每个案例(或案例)被发送到适当的输出/设置器的情况列表.

也许我可以DataTrigger在我的情况下使用,我只是不知道我将如何做到这一点,因为我没有DataTemplate在这里使用任何.

更新
在我的场景中,我有一个UserControl有几个控件.我希望根据UserControl.DataContext数据项中的某个属性,用户控件中的其他控件应该相应地受到影响.基本上与我上面的例子相同,每个案例都会导致一个Setters 列表.

wpf xaml binding datatrigger switch-statement

7
推荐指数
3
解决办法
9684
查看次数

使用DataTrigger动态设置事件处理程序

我有几个项目控件,只有在满足某个条件时才需要为其PreviewMouseLeftButtonDown事件附加一个事件处理程序.

我用一个数据触发器为我的控件设计了一个样式,我检查了它的绑定并尝试使用BorderThickness属性的常规属性设置器来查看数据触发器的工作原理.(确实......)

当使用事件设置器以与常规属性设置器相同的方式满足datatrigger的条件时,如何应用我的datatrigger来附加事件处理程序?

类似的东西:

     <Style TargetType="{x:Type ItemsControl}">                              
        <Style.Triggers>
            <DataTrigger Binding="{Binding Turn}" Value="True">
                <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter>
            </DataTrigger>                            
        </Style.Triggers>
     </Style>
Run Code Online (Sandbox Code Playgroud)

此标记在eventsetter行上抛出以下异常:

    'Set property 'System.Windows.EventSetter.Event' threw an exception.' 
Run Code Online (Sandbox Code Playgroud)

内在例外:

       {"Value cannot be null.\r\nParameter name: value"}
Run Code Online (Sandbox Code Playgroud)

wpf datatrigger eventsetter

7
推荐指数
1
解决办法
4480
查看次数

WPF触发器

我正试图设置一个触发器来显示一个文本块,当我得到的单元格的值是某种类型.

我已成功设法在相同的情况下显示图像,但在这种情况下,我不想要图像,而是一些文本.

已注释出行以进行测试以使其正常工作.注释掉的代码有效!文本块text = xxx在里面,没有.

这是我的尝试

<wpfToolkit:DataGridTemplateColumn Header="P" Width="20">
    <wpfToolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <!-- <DataTemplate.Triggers> -->
            <!-- <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> -->
            <TextBlock Text="XXX" />
            <!-- </DataTrigger> -->
            <!-- <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> -->
            <!-- <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> -->
            <!-- </DataTrigger> -->
            <!-- </DataTemplate.Triggers> -->
        </DataTemplate>
    </wpfToolkit:DataGridTemplateColumn.CellTemplate>
</wpfToolkit:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

wpf xaml datatrigger

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

WPF DataTrigger无法找到触发器目标

<ListBox.ItemTemplate>
    <DataTemplate>
        <Grid x:Name="grid">
            <Grid.Background>
                <SolidColorBrush x:Name="backgroundBrush" Color="Transparent" Opacity="0.1"/>
            </Grid.Background>
        </Grid>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding IsExpanded}" Value="True">
                <Setter TargetName="backgroundBrush" Property="Color" Value="Green" />
            </DataTrigger>
            <Trigger SourceName="grid" Property="IsMouseOver" Value="True">
                <Trigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Storyboard.TargetName="backgroundBrush"
                                 Storyboard.TargetProperty="Color"
                                 To="White" Duration="0:0:1.5"/>
                         </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
                <Trigger.ExitActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Storyboard.TargetName="backgroundBrush"
                                Storyboard.TargetProperty="Color"
                                AccelerationRatio="1" Duration="0:0:1.5" />
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.ExitActions> 
            </Trigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

不编译错误'无法找到触发器目标'backgroundBrush'.'

如果我删除DataTrigger它将编译并工作.如果我更改DataTrigger以使用TargetName="grid" Property="Background"它将编译并工作(但没有所需的不透明度).

我哪里错了?

wpf datatrigger datatemplate

6
推荐指数
1
解决办法
6501
查看次数

基于SelectedItem设置ComboBox的IsEnabled属性

我想根据另一个ComboBox中是否选择了一个项来启用/禁用ComboBox.我能够通过在Style上设置触发器来使其工作,但这会覆盖我对组合框的自定义全局样式.有没有另一种方法来获得相同的功能而不会失去我的风格?

<ComboBox Grid.Column="1" Grid.Row="1"
              Name="AnalysisComboBox" 
              MinWidth="200"
              VerticalAlignment="Center" HorizontalAlignment="Left"
              ItemsSource="{Binding Path=AvailableAnalysis}">

        <ComboBox.Style>
            <Style TargetType="{x:Type ComboBox}">
                <Setter Property="IsEnabled" Value="True" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding SelectedItem,ElementName=ApplicationComboBox}" Value="{x:Null}">
                        <Setter Property="IsEnabled" Value="False" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ComboBox.Style>
    </ComboBox>
Run Code Online (Sandbox Code Playgroud)

c# wpf combobox datatrigger isenabled

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

无法在WPF中设置DataTrigger

我在主视图上有一个ComboBox和一个Button,我想在按钮上应用一个样式,这样当组合框索引设置为1时,按钮变为可见(最初它是隐藏的).这是我的XAML代码:

<Grid>
    <StackPanel Orientation="Vertical" Margin="10">
        <ComboBox Name="comboBox"/>

        <Button Name="myBtn" Content="Hello" Visibility="Hidden">
             <Button.Style>
                 <Style TargetType="{x:Type Button}">
                     <Style.Triggers>
                         <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1">
                             <Setter Property="Visibility" Value="Visible"/>
                          </DataTrigger>
                      </Style.Triggers>
                  </Style>
              </Button.Style>
         </Button>
     </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

有人在这里问了一个关于这个的问题,而且我做了几乎相同的事情,但它不起作用,即使索引更改为1,按钮仍然隐藏.最初在后面的代码中填充了comobox有2件物品.任何帮助表示赞赏.

c# wpf xaml styles datatrigger

6
推荐指数
1
解决办法
4922
查看次数

我可以在sqlite的触发器中创建变量吗?

我想创建一个更新触发器,

我可以在“BEGIN”和“END”之间创建一个变量,并通过 select sql 语句的查询设置值吗?然后通过判断这个变量来执行“if”“else”语句

sqlite datatrigger sqliteopenhelper android-sqlite

6
推荐指数
1
解决办法
2480
查看次数

比较DataTrigger中的两个动态值

我想比较两个动态值User_iduser_id相等并设置一个属性Cursor.此外,当光标是手动时,我必须执行一个功能.怎么做?这是我正在使用的代码:

<DataTrigger Binding="{Binding Path=User_id}" Value="{Binding Path=user_id}">
  <Setter Property="Cursor" Value="Hand"/>
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)

data-binding wpf datatrigger

6
推荐指数
1
解决办法
5911
查看次数