0
나는 observablecollection을 가지고 있는데, 버튼을 생성하는데 문제가있다. 각각의 버튼은 같은 이벤트 핸들러를 호출한다. 각 버튼마다 서로 구별 할 수 있도록 고유 한 ID를 갖도록하려고합니다. 버튼 요소를 생성하기 위해 사용되는 코드observablecollection with buttons 사용하기
public class button
{
public bool IsEmpty { get; set; }
public int ID {get; set;}
public button(int button_Number)
{
IsEmpty = true;
ID = button_Number;
}
}
I 다음 코드
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>
이다에서 ObservableCollection에 추가되는 경우를 이 메서드로 Uid를 설정하려고 시도하면 시스템이 충돌합니다. 모든 권장 사항 또는 각 단추가 고유 한 ID를 가질 수있는 다른 솔루션을 수정하는 방법
01 23,516,
그래서 나는이 밖으로 시도를하지만 태그처럼 보인다 ID가 설정된 후에도 값이 남아 있습니다. – yawnobleix
이유를 말하기 어렵습니다. 이것은 효과가있다. 사실 전체 데이터 객체는 Button.DataContext 속성에 있어야합니다. 아마 button.DataContext의 값인 이벤트 핸들러를 확인해야 할 것입니다. – jure
죄송합니다. 지금 내가하고있는 일이 무엇인지, 혼란 스러워요. 'private void Button_Click (객체 발신자, EventArgs e) { var myButton = Convert.ToInt32 (this.Tag); }' – yawnobleix