У меня есть наблюдаемое объединение для создания кнопок, проблема в том, что каждая из этих кнопок вызывает тот же обработчик событий. Я пытаюсь сделать так, чтобы каждая кнопка имела свой уникальный идентификатор, чтобы их можно отличить друг от друга. код, используемый для создания элементов кнопкиИспользование наблюдаемого коллекционирования с кнопками
public class button
{
public bool IsEmpty { get; set; }
public int ID {get; set;}
public button(int button_Number)
{
IsEmpty = true;
ID = button_Number;
}
}
I добавляет к 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 с помощью этого метода, системные сбои, любые рекомендации по устранению этого или любого другого решения, где каждая кнопка может иметь уникальный идентификатор
Так что я попробовал это, но это, кажется, как теги значение остается NULL даже после того, как установлен ID – yawnobleix
Трудно сказать, почему. Это должно сработать. Infact весь ваш объект данных должен быть в свойстве Button.DataContext. Может быть, вы должны проверить внутри обработчика события, что это значение button.DataContext – jure
К сожалению я немного запутался, что вы говорите, прямо сейчас, что я делаю 'частная пустота Button_Click (объект отправителя, EventArgs е) { вар myButton = Convert.ToInt32 (this.Tag); } ' – yawnobleix