【问题标题】:wpf Button in listview with bindinglistview中的wpf按钮与绑定
【发布时间】:2015-03-15 02:41:56
【问题描述】:

我取消了一种用于收集的类

public class inoutboundpd
{
    public string srcip { get; set; }
    public string srcport { get; set; }
    public string dstip { get; set; }
    public string dstport { get; set; }
    public string protocol { get; set; }
    public Button dpibutton { get; set; }
    public Button delbutton { get; set; }
}
ObservableCollection<inoutboundpd> _inboundp = new ObservableCollection<inoutboundpd>();
public ObservableCollection<inoutboundpd> inboundp
{
    get { return _inboundp; }
}  //*/

这是我未完成的 xaml 源代码

<ListView x:Name="policylistScrollViewer" ItemsSource="{Binding inboundp}"  HorizontalAlignment="Left" Height="169" VerticalAlignment="Bottom" ScrollViewer.VerticalScrollBarVisibility="Auto" Width="575">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Source IP" Width="110" DisplayMemberBinding="{Binding Path=srcip}" />
            <GridViewColumn Header="Protocol" Width="50" DisplayMemberBinding="{Binding Path=protocol}" />
            GridViewColumn Header="DPI" Width="40" >
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="DPI" Command="{Binding Path=dpibutton}"/>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
            <GridViewColumn Header="Delete" Width="40" CellTemplate="{DynamicResource delbutton}">
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

这两个按钮不适合我的意图。 和

Button bt = new Button();
bt.Content = "DPI";
bt.Tag = url + " " + image + " " + audio + " " + video + " " + word;
//bt.PreviewMouseDown += new MouseButtonEventHandler(dpiconfirm);
_inboundp.Add(new inoutboundpd { srcip = isip, srcport = isport, dstip = idip, dstport=idport , protocol=protocol, dpibutton=bt, delbutton=dbt });

这行不通。 如何将 bt Button 绑定到 listview 按钮列? 我想通过事件'dpiconfirm'和'Button.Tag等动态地将按钮添加到listview列......

【问题讨论】:

    标签: c# wpf listview button


    【解决方案1】:

    以下是推荐性 cmets 的摘要,它们会导致可行的解决方案:

    dpibutton 应该是 ICommand,而不是 Button。见ButtonBase.Command

    public class inoutboundpd 
    {
        public string srcip { get; set; }
        public string srcport { get; set; }
        public string dstip { get; set; }
        public string dstport { get; set; }
        public string protocol { get; set; }
        public ICommand dpibutton { get; set; }
        public ICommand delbutton { get; set; }
    }
    

    那么您必须在创建视图之前设置ICommand 属性。为此,您必须创建实现ICommand 的类。确保 CanExecute() 实现返回 true。

    我还建议从MouseButtonEventHandlerICommand.Execute 调用一个公共私有函数来处理按钮点击。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多