小编bko*_*cic的帖子

绑定到DataTemplate中的父DataContext

我正在尝试将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 .

.net data-binding wpf datacontext

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

log4net - BufferingForwardingAppender - 刷新超时

我在某些时候有一连串的日志消息,所以我不得不BufferingForwardingAppender出于性能原因.但是,除了这种爆发(发生这种情况,一天一次),在剩下的一天中,我会收到少量的日志消息.问题是缓冲区大小设置为50,这对于突发时段是可以的,但对于没有突发的时段来说这太过分了.在此期间,刷新日志可能需要一两个多小时,这在此系统中是不可接受的.

有没有办法BufferingForwardingAppender在特定的时间间隔(例如每10分钟)进行刷新,如果缓冲区中没有足够的消息来触发通常的进程?

log4net log4net-configuration log4net-appender

7
推荐指数
2
解决办法
1290
查看次数

如何在WPF中从System.Drawing.Image创建ImageBrush?

我在System.Drawing.Image对象中有图像,我需要从中创建一个ImageBrush对象(例如用于WPF中的Rectangle的Fill属性).我想应该有办法做到这一点,但我找不到一个.

c# wpf image

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

EventTrigger 从 DataContext 绑定到事件

我正在尝试完成这样的事情:

<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)

c# data-binding wpf xaml

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