簡體   English   中英

帶綁定的ListView中的WPF按鈕

[英]wpf Button in listview with binding

我取消了要收集的一類課程

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按鈕綁定到列表視圖按鈕列? 我想通過事件'dpiconfirm'和'Button.Tag等將按鈕動態添加到listview列...

以下是建議性評論的摘要,這些評論可導致可行的解決方案:

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調用公用私有函數來處理按鈕單擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM