小编Cos*_*Cos的帖子

.NET ObservableDictionary

我编写了以下类来实现(或尝试!)带有通知的字典:

public partial class ObservableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, INotifyCollectionChanged
{
    public ObservableDictionary() : base() { }
    public ObservableDictionary(int capacity) : base(capacity) { }
    public ObservableDictionary(IEqualityComparer<TKey> comparer) : base(comparer) { }
    public ObservableDictionary(IDictionary<TKey, TValue> dictionary) : base(dictionary) { }
    public ObservableDictionary(int capacity, IEqualityComparer<TKey> comparer) : base(capacity, comparer) { }
    public ObservableDictionary(IDictionary<TKey, TValue> dictionary, IEqualityComparer<TKey> comparer) : base(dictionary, comparer) { }

    public event NotifyCollectionChangedEventHandler CollectionChanged;

    public new TValue this[TKey key]
    {
        get
        {
            return base[key];
        }
        set
        {
            OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, key, …
Run Code Online (Sandbox Code Playgroud)

.net c# dictionary observablecollection

33
推荐指数
3
解决办法
5万
查看次数

datagrid列按钮命令(MVVM)

我有以下内容

<ResourceDictionary 

xmlns:vm="clr-namespace:SilverlightApplication1.ViewModels.Controls"> 

<DataTemplate DataType="vm:CVItemVM" x:Key="viewmodel">
Run Code Online (Sandbox Code Playgroud)

..........

                    <sdk:DataGrid Grid.Row="1" AutoGenerateColumns="False" Width="820" MaxColumnWidth="395" ItemsSource="{Binding Path=Publications}" Visibility="{Binding Path=Publications.Count, Converter={StaticResource ConverterVisibility2_1}}">
                        <sdk:DataGrid.ColumnHeaderStyle>
                            <Style TargetType="sdk:DataGridColumnHeader">
                                <Setter Property="FontWeight" Value="Bold" />                                     
                            </Style>
                        </sdk:DataGrid.ColumnHeaderStyle>
                        <sdk:DataGrid.Columns>
                            <sdk:DataGridTextColumn Header="Title" Binding="{Binding Path=Title}"  CanUserResize="False" IsReadOnly="True" />
                            <sdk:DataGridTextColumn Header="Author" Binding="{Binding Path=Author}" CanUserResize="False" IsReadOnly="True"  />
                            <sdk:DataGridTemplateColumn Header="">                                    
                                <sdk:DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <Button Content="{Binding Path=Id}" Command="{Binding Path=DeleteCommand, Mode=TwoWay}" />                                            
                                    </DataTemplate>
                                </sdk:DataGridTemplateColumn.CellTemplate>
                            </sdk:DataGridTemplateColumn>                                
                        </sdk:DataGrid.Columns>
                    </sdk:DataGrid>
Run Code Online (Sandbox Code Playgroud)

我面临的问题是

<Button Content="{Binding Path=Id}" Command="{Binding Path=DeleteCommand, Mode=TwoWay}" />                                            
Run Code Online (Sandbox Code Playgroud)

不触发绑定的命令.

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

指的是以下(在viewmodel中)

public ObservableCollection<PublicationVM> Publications
Run Code Online (Sandbox Code Playgroud)

相同的viewmodel暴露

public ICommand DeleteCommand { get; set; …
Run Code Online (Sandbox Code Playgroud)

silverlight datagrid mvvm

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