나는 TreeView에 묶인 날짜가 있습니다. 날짜에 대한 래퍼 클래스가 있습니다. 날짜와 연도 그룹. 래퍼 클래스는에 isSelected 및으로 IsExpanded 속성이 있습니다 DateViewModel의뷰 모델을 사용하여 TreeView의 경로를 확장하십시오.
public sealed class DateViewModel : NotificationObject, IEditableObject
{
#region properties
bool _isSelected;
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
if (_isSelected != value)
{
_isSelected = value;
RaisePropertyChanged(() => IsSelected);
}
}
}
bool _isExpanded;
public bool IsExpanded
{
get
{
return _isExpanded;
}
set
{
if (_isExpanded != value)
{
_isExpanded = value;
RaisePropertyChanged(() => IsExpanded);
}
}
}
DateTime _date;
public DateTime Date
{
get
{
return _date;
}
set
{
if (_date != value)
{
_date = value;
RaisePropertyChanged(() => Date);
RaisePropertyChanged(() => Year);
RaisePropertyChanged(() => Month);
RaisePropertyChanged(() => MonthName);
RaisePropertyChanged(() => Day);
}
}
}
public int Year
{
get
{
return Date.Year;
}
}
public int Month
{
get
{
return Date.Month;
}
}
public string MonthName
{
get
{
return CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Date.Month);
}
}
public int Day
{
get
{
return Date.Day;
}
}
#endregion properties
}
ObservableCollection에이 트 리뷰에 대한 ItemsSource로 사용됩니다. CollectionViewSource ANS DataTemplates에 의해 그룹 날짜 :
<DataTemplate x:Key="DayTemplate">
<TextBlock x:Name="textBlock"
FontSize="14"
Text="{Binding Path=Day}" />
</DataTemplate>
<HierarchicalDataTemplate x:Key="MonthTemplate"
ItemsSource="{Binding Path=Items}"
ItemTemplate="{StaticResource DayTemplate}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="YearTemplate"
ItemsSource="{Binding Path=Items}"
ItemTemplate="{StaticResource MonthTemplate}">
<TextBlock>
<Run Text="{Binding Path=Name, Mode=OneWay}" />
<Run Text="y" />
</TextBlock>
</HierarchicalDataTemplate>
<telerik:RadTreeView Grid.Row="1"
ItemsSource="{Binding Path=Dates.View.Groups}"
ItemTemplate="{StaticResource YearTemplate}">
<telerik:RadTreeView.ItemContainerStyle>
<Style TargetType="{x:Type telerik:RadTreeViewItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
<Setter Property="IsExpanded" Value="{Binding Path=IsExpanded, Mode=TwoWay}" />
</Style>
</telerik:RadTreeView.ItemContainerStyle>
</telerik:RadTreeView>
문제는 : 내가 참으로 IsExpanded 속성을 설정하여보기 모델을 사용하여 현재까지의 전체 경로를 확장해야합니다. 하지만 효과가 없습니다.
업데이트 :
는 그래, 난 코드 그룹의 설명을 만들었습니다. 확장 코드는 간단합니다.
public sealed class DatesViewModel
{
ObservableCollection<DateViewModel> _dates = new ObservableCollection<DateViewModel>();
public CollectionViewSource Dates {get; set;}
public DatesViewModel()
{
Dates = new CollectionViewSource { Source = _dates } ;
// add groups, sorts and fill collection
...
}
// Just a sample
public void ExpandFirstDate()
{
_dates[0].IsExpanded = true;
}
}
위 코드가 누락되었습니다.
또한 나는 시험 시료가 원하는 TreeView
가 CollectionViewSource.View.Groups
에 구속력 TreeViewGroupingSample.7z
John 돌아 오신 것을 환영합니다! 실제로 무슨 일이 일어나고있는거야? 전혀 확장되지 않습니까? –
@AngelWPF : 안녕하세요. 즉, 현재 선택한 항목으로 전체 경로를 확장하는 방법입니다. CollectionViewGroupInternal에는 IsExpanded 속성이 없습니다. –
이렇게 GroupDescriptions을 추가 했습니까? 'Dates.View.GroupDescriptions.Add (새 GroupDescription ("Year")); Dates.View.GroupDescriptions.Add (새 GroupDescription ("Month")); Dt.View.GroupDescriptions.Add (새 GroupDescription ("Day")); ' –