我正在尝试将MenuItem的命令绑定到包含在其中的命令UserControl.DataContext.我发现了几个类似的问题,但根据它们的解决方案对我没有意义:
<UserControl ...>
<UserControl.Resources>
<DataTemplate x:Key="TileItemStye">
<Grid Width="100" Height="100">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove"
Command="{Binding DataContext.RemoveItem,
RelativeSource={RelativeSource FindAncestor,
AncestorType=UserControl}}">
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ListView ItemsSource="{Binding Path=Files}"
ItemTemplate="{DynamicResource TileItemStye}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
Run Code Online (Sandbox Code Playgroud)
UserControl的DataContext是带有ICommandRemoveItem和ObservableCollection<FileViewModel>Files的ViewModel .
我在某些时候有一连串的日志消息,所以我不得不BufferingForwardingAppender出于性能原因.但是,除了这种爆发(发生这种情况,一天一次),在剩下的一天中,我会收到少量的日志消息.问题是缓冲区大小设置为50,这对于突发时段是可以的,但对于没有突发的时段来说这太过分了.在此期间,刷新日志可能需要一两个多小时,这在此系统中是不可接受的.
有没有办法BufferingForwardingAppender在特定的时间间隔(例如每10分钟)进行刷新,如果缓冲区中没有足够的消息来触发通常的进程?
我在System.Drawing.Image对象中有图像,我需要从中创建一个ImageBrush对象(例如用于WPF中的Rectangle的Fill属性).我想应该有办法做到这一点,但我找不到一个.
我正在尝试完成这样的事情:
<DataTemplate.Triggers>
<EventTrigger RoutedEvent="{Binding MyEvent}">
<BeginStoryboard Storyboard="{StaticResource MyAnimation}" />
</EventTrigger>
</DataTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)
MyEvent 是来自我的 DataContext 的事件。
这不起作用,因为 RoutedEvent 不能是 Binding 表达式。知道如何做到这一点吗?事实上,我需要一些 EventTrigger 和 DataTrigger 的混合......
Blend SDK 的解决方案:
<Interactivity:Interaction.Triggers>
<Interactivity:EventTrigger SourceObject="{Binding}" EventName="MyEvent">
<ei:ControlStoryboardAction ControlStoryboardOption="Play">
<ei:ControlStoryboardAction.Storyboard>
<Storyboard>
....
</Storyboard>
</ei:ControlStoryboardAction.Storyboard>
</ei:ControlStoryboardAction>
</Interactivity:EventTrigger>
</Interactivity:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)