标签: wpf-controls

WPF TextBlock文本已更改通知

我有一个屏幕包含大约15-20个TextBlocks,每个TextBlocks绑定到一个不同的属性,起初所有TextBlocks都是空的文本更新来自其他客户端.

我想要做的是在文本更改时为闪烁文本设置动画3秒.

我使用下面的故事板来实现这一点:

    <Setter Property="Visibility" Value="Visible"/>

       <Style.Triggers>
        <EventTrigger RoutedEvent="UIElement.MouseEnter">  

            <BeginStoryboard >
                <Storyboard Duration="0:0:03">
                    <ObjectAnimationUsingKeyFrames BeginTime="00:00:00"  Storyboard.TargetProperty="(UIElement.Visibility)">
                        <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/>
                        <DiscreteObjectKeyFrame KeyTime="00:00:00.5" Value="{x:Static Visibility.Hidden}"/>
                        <DiscreteObjectKeyFrame KeyTime="00:00:01" Value="{x:Static Visibility.Visible}"/>
                        <DiscreteObjectKeyFrame KeyTime="00:00:01.5" Value="{x:Static Visibility.Hidden}"/>
                        <DiscreteObjectKeyFrame KeyTime="00:00:02" Value="{x:Static Visibility.Visible}"/>
                        <DiscreteObjectKeyFrame KeyTime="00:00:02.5" Value="{x:Static Visibility.Hidden}"/>
                        <DiscreteObjectKeyFrame KeyTime="00:00:03" Value="{x:Static Visibility.Visible}"/>
                    </ObjectAnimationUsingKeyFrames>
               </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

使用鼠标输入事件文本闪存很好但使用Binding.TargetUpdated事件没有触发任何事情.

有人知道TextBlock文本更改时引发的事件吗?

wpf wpf-controls

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

WPF数据网格粘贴

我在从csv粘贴到wpf数据网格时遇到了麻烦 - 我已经按照这里的建议进行了操作

http://blogs.msdn.com/b/vinsibal/archive/2008/09/25/pasting-content-to-new-rows-on-the-wpf-datagrid.aspx

并且代码exectues没有问题 - 但是,似乎创建了所有新行,但只有第一行填充了数据.数据似乎不断被覆盖,以便剪贴板数据中的最后一项填充在第一行,所有其他行都是空白.我知道这一定是一个索引问题,但我无法追踪它.

此外,当我查看网格的可绑定集合中的对象时,它们都没有任何数据.在列的OnPastingCellClipboardContent中是否存在某些错误(也许是数据转换)?

任何想法(见下面的代码)

protected virtual void OnExecutedPaste(object sender, ExecutedRoutedEventArgs args)
    {
        // parse the clipboard data
        List<string[]> rowData = ClipboardHelper.ParseClipboardData();
        bool hasAddedNewRow = false;

        // call OnPastingCellClipboardContent for each cell
        int minRowIndex = Math.Max(Items.IndexOf(CurrentItem), 0);
        int maxRowIndex = Items.Count - 1;
        int minColumnDisplayIndex = (SelectionUnit != DataGridSelectionUnit.FullRow) ? Columns.IndexOf(CurrentColumn) : 0;
        int maxColumnDisplayIndex = Columns.Count - 1;

        int rowDataIndex = 0;
        for (int i = minRowIndex; i <= maxRowIndex && rowDataIndex < rowData.Count; i++, …
Run Code Online (Sandbox Code Playgroud)

wpf wpf-controls wpfdatagrid

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

设置WPF复选框的不确定状态

我想设置WPF复选框的不确定状态.我们有一个带有复选框的树视图控件,我们希望不确定状态表示某些后代被检查而一些未被选中.

我到处看到的解决方案是覆盖复选框的默认控件模板并执行我需要做的事情.

我有两个问题:

  1. 我找不到普通Aero复选框的控件模板.这个:http: //msdn.microsoft.com/en-us/library/ms752319.aspx 看起来很傻.

  2. 我从Expression Blend获得的控件模板中包含了BulletChrome元素,我无法弄清楚该怎么做.

那么有谁知道在哪里获得看起来"正常"的复选框控制模板,或者是否有更简单的方法来自行设置不确定状态?

我确信有一种简单的方法我只是忽略......对吗?

wpf xaml styles wpf-controls

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

删除ContextMenu上的图标空间

我将以下ContextMenu挂钩到ListBox.我真的想要删除图标所在的空间.这有可能以一种简单的方式吗?

                    <ListBox.ContextMenu>
                    <ContextMenu >
                        <MenuItem x:Name="check" Header="Check all" Click="CheckAll" />
                        <MenuItem x:Name="uncheck" Header="Uncheck all" Click="UnCheckAll" />
                    </ContextMenu>
                </ListBox.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

wpf wpf-controls

14
推荐指数
1
解决办法
9616
查看次数

为什么选项卡控件在更改选项卡时重用View实例

我有一个遵循MVVM模式的WPF项目.

我有一个包含选项卡控件的控件.选项卡控件绑定到可观察的集合.可观察集合中的每个项目都是要显示的特定标签页面的视图模型.

实现选项卡控件的xaml文件使用数据模板来选择要显示的特定用户控件,具体取决于可观察集合中视图模型的具体类型.

我观察到的奇怪行为是,当我在不同类型的两个选项卡之间进行切换时,会创建一个新的用户控件实例.当我在相同类型的两个选项卡之间进行更改时,WPF会重用相同的用户控件实例,它只会更改控件上的DataContext.

这有一些非常不幸的后果,例如当在相同类型的两个选项卡之间进行切换但具有不同的视觉状态时,则显示视觉状态转换动画,其中不应该显示; 变化应该是即时的.在两个不同类型的选项卡之间进行更改时,也会出现一些异

我是否可以更改此行为,以便选项卡控件将为每个选项卡页面保留一个用户控件实例,而不是在切换到其他选项卡时"销毁"控件.

<UserControl.Resources>
    <DataTemplate DataType="{x:Type ViewModels:ConcreteViewModel1}" d:IsDataSource="true">
        <Views:ConcreteView1 />
    </DataTemplate>
    <DataTemplate DataType="{x:Type ViewModels:ConcreteViewModel2}" d:IsDataSource="true">
        <Views:ConcreteView2/>
    </DataTemplate>
    ...
</UserControl.Resources>

<Grid x:Name="ControlTabLayoutRoot">
    <TabControl Grid.Row="0" x:Name="Main_TabControl"
        ItemsSource="{Binding MainTabControl}"
        SelectedIndex="{Binding SelectedIndex}" 
        IsSynchronizedWithCurrentItem="True"
        HorizontalContentAlignment="Stretch" 
        VerticalContentAlignment="Stretch"
        ItemContainerStyle="{DynamicResource CustomTabItemStyle}"
        Style="{DynamicResource CustomTabControl}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock>                 
                <TextBlock.Text>
                  <MultiBinding Converter="{StaticResource tabItemHeaderConverter}">
                      <MultiBinding.Bindings>
                          <Binding/>
                          <Binding Path="ProtocolName"/>
                      </MultiBinding.Bindings>
                  </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </TabControl.ItemTemplate>
    </TabControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)

wpf binding wpf-controls

14
推荐指数
1
解决办法
6812
查看次数

如何使WPF ListView不高于其内容但适合窗口与其他控件?

我正在尝试按如下方式安排WPF UI:

小样

  1. 在窗口的顶部是一些自我确定高度的控件(有效地停靠在窗口的顶部,但是他们想要的高度).
  2. 这些控件下面是ListView.ListView可能包含可变数量的项目,每个项目的高度各不相同.问题: ListView不能高于它需要的高度.如果列表视图中的所有项目都很容易适合窗口,我希望ListView 正好是显示其所有项目的高度(因此窗口看起来像一个网页的流动布局,底部有空白).另一方面,如果所有ListView项目都不适合窗口,我希望整个UI适合窗口(好像下面的数字3停靠在窗口的底部,并且ListView填充了可用空间) .当用户调整窗口大小和/或按下改变列表视图内容的按钮时,这一切都必须动态调整.
  3. 在ListView下面是一些自我确定高度的控件.这些必须始终直接出现在ListView下,没有间隙.特别是如果它们直接适合ListView,它们不能仅停靠在窗口的底部.

解决方案将非常受欢迎; 我已经摆弄了一段时间并且设法让事情工作除了 ListView下面的控件,通过在窗口中使用外部DockPanel,第一个控件停靠在顶部,ListView填充剩余空间但设置为VerticalAlignment ="最佳".

一个纯粹的XAML解决方案是理想的,但如果它不可避免,我不介意代码背后.一个解决方案的奖励点,允许多个这样的安排垂直堆叠:)感谢您的帮助!

wpf listview docking wpf-controls autoresize

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

模拟Windows 8开始菜单平铺布局引擎

那么那里的任何人都知道完全模拟Windows 8开始菜单平铺布局引擎的示例代码或控件?

它应该支持混合的Square和Rectangle Tiles,并正确地重新打包矩形块上方或下方的方块.

注意:如果ALL TILES为Square,则WrapPanel有效.但是一旦你混合了占地2平方的空间的瓷砖,布局就会中断,并且与Windows 8开始菜单不一致

我期待扩展WPF Panel的代码.


免责声明:是的我已经在互联网上搜索过,我发现的最接近的是CodeProject示例,但只有在所有磁贴都是相同大小的方块时才有效.

c# wpf wpf-controls microsoft-metro

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

在"添加新项目窗口"中找不到ResourceDictionary

当我创建一个新的WPF项目时,我可以在Add New Item Window中找到ResourceDictionary.但我还有另一个项目,我找不到,我不知道为什么. 只有UserControl但没有ResourceDictionary

更新:该项目最初是针对.net 3.5的,但现在它还有.net 4.0的版本.这意味着同一个项目中有两个.sln文件(一个用于3.5,另一个用于4.0).

wpf wpf-controls resourcedictionary

14
推荐指数
2
解决办法
8865
查看次数

将WPF webbrowser控件设置为使用IE10模式

如何设置WPF webbrowser控件以在iE10模式下呈现页面或在机器上安装更高版本.默认情况下,如果我在OS> Windows 7的任何机器上创建.net 4或.net 4.5应用程序,它只会在IE7模式下呈现html页面.(如果我错了,请更正)如果在目标机器上安装IE10,如何启用应用程序以IE10模式呈现html页面?任何帮助

wpf webbrowser-control wpf-controls

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

如何在WPF中为用户控件注入依赖项

在WPF中透明地将依赖项(使用IOC容器)注入用户控件的最佳方法是什么?

我假设用户控件是窗口或其他用户控件的XAML的一部分.我认为父母(无论是谁)不应对此负责.从父级手动注入依赖项的解决方案看起来不够干净.我希望避免明确管理组件的依赖关系,因为它消除了IOC的想法.

是否在创建逻辑树时引发任何事件,以便我可以拦截它并注入我的依赖项?

编辑:依赖我也意味着ViewModel,Controller,Presenter(使用的模式)

谢谢,安德烈

.net wpf wpf-controls

13
推荐指数
2
解决办法
4596
查看次数