내 응용 프로그램에 사용자 지정 컨트롤이 있습니다. 종속성 속성 중 하나 인 ObservableCollection<ToggleButton>
: 나는 다음 ListView
Generic.xaml
에서 그들을두고있어ListView ItemsPanel 중복 항목 설정
public ObservableCollection<ToggleButton> HeaderButtons
{
get { return (ObservableCollection<ToggleButton>)GetValue(HeaderButtonsProperty); }
set { SetValue(HeaderButtonsProperty, value); }
}
public static readonly DependencyProperty HeaderButtonsProperty = DependencyProperty.Register("HeaderButtons", typeof(ObservableCollection<ToggleButton>), typeof(Expandable), new PropertyMetadata(new ObservableCollection<ToggleButton>()));
:
<ListView ItemsSource="{TemplateBinding HeaderButtons}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
...이처럼 사용 :
<controls:MyControl.HeaderButtons>
<ToggleButton x:Name="FilterButton">
<Image Source="/Assets/Icons/Empty Filter-512.png" Height="15" Width="15"/>
</ToggleButton>
</controls:MyControl.HeaderButtons>
그러나 중복 된 항목으로 계속 끝납니다 :
해당 항목이 어떻게 전달되는지 알 수 없습니다. 나는 나의 주문 ListView.ItemsPanel
을 제거함으로써 그것을 고칠 수있다. 그러나 물론 그것은 나의 목적을 수직으로 흐르게하여 전체 목적을 이겨낸다. 이 항목을 복제하는 이유를 다른 사람이 볼 수 있습니까?
EDIT : 추가 관심 사항으로, 라이브 비쥬얼 트리에 들어가면 두 버튼의 이름이 모두 "FilterButton"임을 알 수 있습니다. 물론 어느 것이 가능하지 않아야합니다.
편집 : 여기에서 ContentPresenter
을 년대 MainWindow
:
private UserControl currentControl;
public UserControl CurrentControl
{
get { return currentControl; }
set
{
if (currentControl != value)
{
currentControl = value;
OnPropertyChanged("CurrentControl");
}
}
}
이상한. 나는 단지 이미지가 유일한 차이점을 가지고 당신의 코드를 테스트했고, 단지 하나의 이미지 만 보여줍니다. – SWilko
거기에 다른 ToggleButton을 던지면 어떻게됩니까? 4 아이템? – SWilko
@SWilko Strange ... 더 자세한 내용은'MainWindow'에서'ContentPresenter' 내부에서 호스팅되는'UserControl' 내부의 컨트롤을 활용하고 있습니다. 네, 4 가지 항목이 있습니다. – RareNCool