标签: datatrigger

删除故事板但保持动画值?

如何在XAML中删除故事板(即DataTrigger中的RemoveStoryboard操作),但保留动画的值.与Animatable.BeginAnimation类似:

如果动画的BeginTime为null,则将删除任何当前动画,并保留属性的当前值.

wpf animation datatrigger storyboard

10
推荐指数
1
解决办法
4344
查看次数

WPF从DataTrigger设置Image.Source

我正在尝试DataTriggerImage元素定义一个元素,以便它显示连接/断开连接的图像.我不断收到Invalid PropertyDescriptor消息.有任何想法吗?

<Image>
    <Image.Style>
      <Style>
        <Style.Triggers>
          <DataTrigger Binding="{Binding Source={x:Static my:Server.Instance}, Path=Connected, Mode=OneWay}"
                       Value="True">
            <Setter Property="Source"
                    Value="serverconnected.png"/>
          </DataTrigger>

        </Style.Triggers>
      </Style>
    </Image.Style>
</Image>
Run Code Online (Sandbox Code Playgroud)

wpf styles image datatrigger

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

DataTrigger没有触发

我有以下xaml:

    <DockPanel>
    <DockPanel>
        <CheckBox IsChecked="{Binding Path=Test}" />
        <CheckBox IsChecked="{Binding Path=Test}" />
    </DockPanel>
    <DockPanel DockPanel.Dock="Left" Width="10" Background="Blue">
        <DockPanel.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=Test}" Value="True">
                        <Setter Property="DockPanel.Background" Value="Yellow" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DockPanel.Style>
    </DockPanel>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

现在 - 2个复选框正确链接 - 检查一个将检查另一个 - 但数据触发器根本没有触发.

我究竟做错了什么?

.net wpf xaml datatrigger

9
推荐指数
1
解决办法
5899
查看次数

如何使用DataTrigger设置WPF中ViewModel中定义的属性

我正在编写一个XAML文件,该文件使用DataTrigger在ViewModel中设置属性.ViewModel类定义为:

public class ShellModel : INotifyPropertyChanged
{    
    public Brush ForegroundBrush
    {
        get; set;
    }

    ....................
}
Run Code Online (Sandbox Code Playgroud)

我想在View.xaml中使用DataTrigger来设置属性ForegroundBrush.我写的XAML是:

<StatusBar Name="statusBar" Grid.Row="3">
    <StatusBarItem>
        <StatusBarItem.Style>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding HasError}" Value="True">
                        <Setter Property="ForegroundBrush" Value="Red" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding HasError}" Value="False">
                        <Setter Property="ForegroundBrush" Value="Black" />
                    </DataTrigger>
                        </Style.Triggers>
            </Style>
        </StatusBarItem.Style>
        <TextBlock Name="statusBarMessage" Foreground="{Binding ForegroundBrush}" Text="{Binding StatusMessage}"></TextBlock>
     </StatusBarItem>
     ........................
Run Code Online (Sandbox Code Playgroud)

这不编译.当我改变了

     <Setter Property="ForegroundBrush" Value="Black" />     
Run Code Online (Sandbox Code Playgroud)

     <Setter Property="ShellModel.ForegroundBrush" Value="Black" />
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

依赖属性字段缺失....

我该怎么写这个,以便DataTrigger可以在ViewModel中设置属性ForegroundBrush?

wpf datatrigger

9
推荐指数
1
解决办法
8022
查看次数

SQL Server在表上插入,删除和更新时触发

我有一张桌子Product和另一张桌子ProductLog.

日志表需要跟踪表中的两列Product.每次在这些列上都有插入,更新或删除时,我需要更新日志表.

我是否需要编写三个单独的触发器,或者一个触发器可以处理这些操作?

我还需要知道操作的类型,例如,我需要知道日志表中的条目是否是因为插入或删除或更新.如果有人给我一个很好的例子.

sql-server datatrigger

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

如何触发属性更改的故事板

我希望有一个故事板开始,每当MyCounter变化的价值.
用一个DataTrigger我只能触发一个特定的值.

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=MyCounter}" Value="Doesn't matter">
            <BeginStoryboard Storyboard="{StaticResource myStoryboard}"/>
    </DataTrigger>
</DataTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)

wpf datatrigger storyboard

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

datatrigger绑定到viewmodel属性

我正在尝试创建一个简单的样式数据触发器,从viewmodel属性中提取它的绑定值,如下所示:

        <StackPanel Name="stackTextPanel" Orientation="Horizontal" Margin="0,8,0,0">
            <StackPanel.Style>
                <Style TargetType="{x:Type StackPanel}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="False">
                            <Setter Property="Margin" Value="0,8,0,0" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding QuickDrawBarPinned}" Value="True">
                            <Setter Property="Margin" Value="0,48,0,0" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
Run Code Online (Sandbox Code Playgroud)

我也试过这个变种

Binding="{Binding Path=QuickDrawBarPinned}"
Run Code Online (Sandbox Code Playgroud)

但是当我按下更改QuickDrawBarPinned属性的按钮时,我仍然无法正常工作我做错了什么?

我已经实现了这个属性:

    private bool _quickDrawBarPinned = false;
    /// <summary>
    /// Indicates if the Quick Draw Bar is pinned (stuck) or unpinned (retractable)
    /// </summary>
    public bool QuickDrawBarPinned
    {
        get { return _quickDrawBarPinned; }
        set
        {
            _quickDrawBarPinned = value;
            OnPropertyChanged("QuickDrawBarPinned");
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是实现更改控制的方法

    public virtual …
Run Code Online (Sandbox Code Playgroud)

wpf datatrigger mvvm

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

如何检查xamarin表单数据触发器中的对象空值?

我正在尝试检查Xamarin Forms XAML DataTrigger中的绑定对象值是否为null但我无法使其工作.我尝试过以下方法:

<StackLayout IsVisible="True">
    <StackLayout.Triggers>
        <DataTrigger TargetType="StackLayout"
                        Binding="{Binding MyObject}"
                        Value="{x:Null}">
            <Setter Property="IsVisible" Value="False"></Setter>
        </DataTrigger>
    </StackLayout.Triggers>

    ...

</StackLayout>
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的方法?我只在Android上测试了这个.

编辑:我已向xamarin bugzilla提交了错误报告https://bugzilla.xamarin.com/show_bug.cgi?id=57863

xaml binding datatrigger xamarin xamarin.forms

9
推荐指数
2
解决办法
3912
查看次数

在WPF中折叠网格行

我创建了一个自定义的WPF元素RowDefinition,当Collapsed元素的属性设置为时,该元素应该折叠网格中的行True.

它通过使用样式中的转换器和数据触发器将行的高度设置为0来实现.它基于此SO答案.

在下面的示例中,当网格分割器超过窗口的一半时,这非常有效.但是,当它不到一半时,行仍然会崩溃,但第一行不会展开.相反,过去的行只有一个白色的间隙.这可以在下图中看到.

图片显示下半部分,底行不会消失,但超过一半

同样,如果在任何折叠的行上设置MinHeight或者MaxHeight设置,则它根本不会折叠该行.我尝试通过在数据触发器中为这些属性添加setter来修复此问题,但它没有修复它.

我的问题是什么可以做不同的,这样也没关系有关行的大小或者MinHeight/ MaxHeight设置,它只是能够折叠行?


MCVE

MainWindow.xaml.cs

using System;
using System.ComponentModel;
using System.Globalization;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace RowCollapsibleMCVE
{
    public partial class MainWindow : INotifyPropertyChanged
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        private bool isCollapsed;

        public bool IsCollapsed
        {
            get => …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datatrigger wpf-grid

9
推荐指数
1
解决办法
1319
查看次数

WPF TextBlock红色负数

我试图找出创建样式/触发器以将前景设置为红色的最佳方法,当值<0时,最好的方法是什么?我假设DataTrigger,但我如何检查负值,我是否必须创建自己的IValueConverter?

wpf triggers styles datatrigger textblock

8
推荐指数
3
解决办法
9140
查看次数