0
我有一個observablecollection來創建按鈕,問題是這些按鈕中的每一個都調用相同的事件處理函數。我正在努力使每個按鈕都有自己獨特的ID,以便它們可以相互區分。用於創建按鈕元素代碼是使用帶按鈕的observablecollection
public class button
{
public bool IsEmpty { get; set; }
public int ID {get; set;}
public button(int button_Number)
{
IsEmpty = true;
ID = button_Number;
}
}
我被添加到的ObservableCollection在下面的代碼
ButtonCollection = new ObservableCollection<cChipVM>();
for (int i = 0 ; i < iNumChips ; ++i)
{
ButtonCollection.Add(new button(i));
}
按鈕的XML是以下
<DataTemplate x:Key="ButtonTemplate">
<Button x:Name="Button" Uid="{Binding Path=ID}" Click="Button_Click" BorderBrush="Black" BorderThickness="1" Margin="7" Width="25" Height="25" ClickMode="Press" Opacity="0.9" Focusable="False" IsHitTestVisible="True" AllowDrop="True" IsTabStop="False">
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsEmpty}" Value="false">
<Setter Property="Button.Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF5ED426" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsEmpty}" Value="true">
<Setter Property="Button.Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF1766F0" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</DataTemplate>
當嘗試使用這種系統崩潰的方法設置Uid,任何建議如何解決這個或任何其他解決方案,其中每個按鈕可以有一個唯一的ID
所以,我想這一點,但它似乎像標籤即使在設置ID後,值仍然爲NULL – yawnobleix 2013-05-09 16:29:41
很難說明原因。這應該工作。 Infact你的整個數據對象應該在Button.DataContext屬性中。也許你應該檢查事件處理中有什麼button.DataContext – jure 2013-05-09 16:32:18
的價值對不起,我有點糊塗,你說的話,現在我正在做的事情是 '私人無效Button_Click(對象發件人,EventArgs的){ VAR myButton = Convert.ToInt32(this.Tag); }' – yawnobleix 2013-05-09 16:42:41