2017-01-31 38 views
1

添加一個功能按鈕,一個ListBoxItem的我有一個列表框一個UWP C#應用程序。我將ListBox ItemContainerStyle屬性設置爲資源中的樣式。我試圖在樣式中添加一個按鈕到ControlTemplate。我不知道在哪裏添加點擊或點擊事件處理程序。如何在UWP XAML

我轉換的代碼使用用戶控件直接添加到列表和它的作品除了VisualStateManager不會在用戶控件工作的偉大。

因此,我可以得到一個UserControl的代碼隱藏功能按鈕,我可以讓VisualStateManager工作並處理ListBoxItem選擇的自定義可視化,但是我無法獲得視覺狀態以及功能按鈕。

我不知道在這裏展示一下代碼,因爲就像我說的,一切,但按鈕正常工作與風格,一切工作正常,除了可視狀態操作的用戶控件。

我看過所有我能找到這和問題最接近我可以來是將具有用於該按鈕的處理函數,但沒有人說什麼課把它加入;他們只是在任何情況下單獨顯示功能。和視覺狀態總是處理似乎需要開發商來檢測鼠標懸停,選擇,等等,指出在代碼中安全地處理每個狀態的處理程序來檢測,然後GotoState函數的調用來獲取視覺狀態管理辦它的東西。沒有所有這些迴轉和額外的和看似冗餘的代碼,必須有一種方法可以做到這一點。

[更新]我目前使用通過設置ItemContainerStyle的ListBoxItem的樣式

。另外,我試圖綁定新添加的Button的Command參數。它不起作用。這是樣式的XAML,只顯示重要部分(因爲除按鈕外它都按預期工作)。這顯示了兩個文本框和按鈕。值得注意的是,TextBox元素的Text屬性的綁定工作正常,文本與預期完全一致。這讓我想假設綁定源和路徑的東西都設置正確。但又一次,我的挫敗,因爲該命令綁定沒有工作,在構建沒有報告錯誤,或運行時間:

<StackPanel Background="Transparent" Margin="0,0,0,0"> 
    <TextBlock FontSize="22" TextWrapping="Wrap" FontWeight="SemiLight" x:Name="Title" Text="{Binding Title}" Margin="12,4,24,6" Visibility="{Binding Title, Converter={StaticResource StringToVisibiltyConverter}}" Foreground="{Binding color}"/> 
    <TextBlock TextWrapping="Wrap" Visibility="{Binding SubTitle, Converter={StaticResource StringToVisibiltyConverter}}" x:Name="Subtitle" Text="{Binding SubTitle}" Margin="12,-6,24,6" Opacity="0.8" Foreground="{Binding color}"/> 
    <Button Command="{Binding ClickCommand}" CommandParameter="x">X</Button> 
</StackPanel> 

下面是我添加到列表框對象的代碼:

public class MultilineListboxItem : Object 
{ 
    public MultilineListboxItem() { ClickCommand = new _ClickCommand(); } 

    public string Title { get; set; } 
    public string SubTitle { get; set; } 
    public string Original { get; set; } 
    public override string ToString() { return Original; } 
    public SolidColorBrush color { get; set; } 

    _ClickCommand ClickCommand; 
} 

當然並且,_ClickCommand類定義:

public class _ClickCommand : ICommand 
{ 
    public void Execute(object parameter) 
    { 
     Diagnostics.AppendDiagnostic("derf"); 
    } 


    public bool CanExecute(object parameter) 
    { 
     Diagnostics.AppendDiagnostic("derf"); 
     return true; 
    } 

    public event EventHandler CanExecuteChanged; 
} 

這些都是我自己的診斷報告功能,在C#或WinRT的不是。

現在我可以回到使用樣式來定義列表項目的外觀,視覺狀態都按預期工作。

回答

3

嘗試將ClickCommand更改爲公共財產。

  • 屬性您使用的綁定,綁定源屬性必須是你的類的公共屬性。顯式定義的接口 屬性不能用於綁定目的,也不能被保護, 私有,內部或虛擬屬性沒有實現基本的 。
  • 您不能綁定到公共領域。

引用:

+0

只是想指出的是,如果你使用'X:Bind','private'工作過。 –