WPF/XAML/MVVM Light 응용 프로그램의 공용 속성에 설정된 값에 따라 DataGridTextcolumn을 축소하려는 아이디어가 부족합니다.DataGridTextColumns를 Binding으로 축소하는 방법
XAML의 추출물은 다음과 같습니다
<StackPanel>
<DataGrid AutoGenerateColumns="False" Name="PipelinesGrid"
HorizontalAlignment="Left"
ItemsSource="{Binding Pipelines}"
SelectedItem="{Binding SelectedPipelineView, Mode=TwoWay}"
VerticalAlignment="Top" Margin="10,16,0,0"
SelectionUnit="FullRow" SelectionMode="Single"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding DailyCapacity, Mode=TwoWay}"
Header="Capacity(d)"
Visibility="{Binding Source={x:Reference PipelinesGrid},
Path=DataContext.ShowCapacities}"/>
여기 가시성 설정 (이 하나가 cycylical 의존성 오류가 있습니다) 내가 해봤 많은 중 하나입니다.
뷰 모델 코드의 관련 추출물은 : 나는 내가 필요로이 문서 (http://stackoverflow.com/questions/8847661/datagridtextcolumn-visibility-binding)에 의해 통보 한
private string _showCapacities;
public string ShowCapacities
{
get { return _showCapacities; }
set { _showCapacities = value; RaisePropertyChanged("ShowCapacities"); }
}
private void OnProjectSelected(ProjectSelectedArgs obj)
{
_selectedProject = obj.SelectedProject;
if (_selectedProject != null)
{
Pipelines = new ObservableCollection<PipelineView>();
foreach (var projectPipeline in _selectedProject.ProjectPipelines)
{
Pipelines.Add(new PipelineView(projectPipeline));
}
switch (_selectedProject.ProjectCategory.ProjectCategory1)
{
case "Upstream":
ShowCapacities = "Collapsed";
break;
case "Mid-Stream":
ShowCapacities = "Visible";
break;
}
}
IsEditing = false;
}
소스 및 Xreference를 사용합니다. 어떤 도움을 주셔서 감사합니다.
답장을 보내 주셔서 감사합니다.하지만 필자는 그 사실을 단지 눈치 채 셨습니다. 귀하의 회신 전에 다른 방식으로 문제를 해결했습니다. –
다시 답장을 보내 드리겠습니다! 감사합니다 Phil - 두 개의 DataGrid를 사용하여 속성에서 보유한 두 개의 반대 값에 바인딩 된 가시성을 설정하고 OnProjectSelected의 switch 문에 적용했습니다. –