내 MainView의 그리드에 배치 된 뷰의 속성을 설정하는 데 문제가 있습니다. 특히 그것은 그것을 숨기고 동시에이 열 옆에있는 다른보기의 ColumnSpan을 모든 열에 걸쳐 놓는 단추를 구현하려는 TreeView 탐색기입니다. 내 XAML은 다음과 같습니다MVVM 다른 뷰에 배치 된 뷰의 속성을 변경하십시오.
<UserControl x:Class="ImageViewer.View.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ImageViewer.View"
xmlns:model="clr-namespace:ImageViewer.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.DataContext>
<model:MainViewModel/>
</UserControl.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="62*"/>
<!--<ColumnDefinition Width="0.1*"/>-->
<ColumnDefinition Width="40*"/>
<ColumnDefinition Width="195*"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<local:FileExplorerView x:Name="fileExplorerView" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,0,0,0.333">
<local:FileExplorerView.Style>
<Style TargetType="{x:Type local:FileExplorerView}">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding FileExplorerVisibility}" Value="Collapsed">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</local:FileExplorerView.Style>
</local:FileExplorerView>
<local:TiledWindowView Margin="0,0,1,0.333">
<local:TiledWindowView.Style>
<Style TargetType="{x:Type local:TiledWindowView}">
<Setter Property="Grid.ColumnSpan" Value="1"/>
<Setter Property="Grid.Column" Value="2"/>
<Style.Triggers>
<DataTrigger Binding="{Binding FileExplorerVisibility}" Value="Collapsed">
<Setter Property="Grid.ColumnSpan" Value="4"/>
<Setter Property="Grid.Column" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</local:TiledWindowView.Style>
</local:TiledWindowView>
</Grid>
<local:MainMenuView Grid.Row="0"/>
<local:FooterView Grid.Row="2"/>
</Grid>
MainViewModel에서
내가 OnPropertyChange 메소드를 호출하고 내가 하나의 TextBlock에와보기를 교체하는 그것을 테스트하고 내가 할 수 있었기 때문에 제대로 작동하는지 100 % 확신 동일한 속성 인 FileExplorerVisibility에 대해 DataTrigger를 사용하여 XAML의 속성을 변경합니다. DataTriggers에 대한이 포럼에는 많은 항목이 있지만 그 중 아무 것도 내 문제에 대한 답변이 없으므로 아무 것도 찾을 수 없다는 것을 알고 있습니다. 나는 솔루션을 찾는 데 전혀 문제가 없었지만 이번에도 첫 번째 질문을 작성하기 위해 계정을 만들어야했습니다. 이 코드의 잘못된 점을 누구나 알고 있습니까? 아니면 내가 알지 못하는 다른 접근 방식이이 상황에서 더 나을 것입니까?
는
public RelayCommand CollapseCommand { get; set; }
public FileExplorerViewModel()
{
CollapseCommand = new RelayCommand(CollapseExecute, CollapseCanExecute);
}
private void CollapseExecute(object obj)
{
_aggregator.GetEvent<CollapseEvent>().Publish();
//Task.Run(() => CollapseMethod());
}
private bool CollapseCanExecute(object obj)
{
return true;
}
MainViewModel
private Visibility fileExplorerVisibility = Visibility.Visible;
public Visibility FileExplorerVisibility {
get => fileExplorerVisibility;
set
{
fileExplorerVisibility = value;
NotifyPropertyChanged();
}
}
public MainViewModel()
{
_aggregator.GetEvent<CollapseEvent>().Subscribe(Collapse);
}
public void Collapse()
{
FileExplorerVisibility = Visibility.Collapsed;
}
FileExplorerViewModel 그래서 사용자는 MainViewModel 해당 이벤트를 구독하는 특정 방법을 실행 FileExplorerView의 버튼 다음 CollapseEvent 게시되어 누른다. 이 부분을 여러 번 확인했는데 정상적으로 작동합니다. 문제는 XAML 어딘가에 있다고 생각합니다.
보기 모델을 표시 할 수 있습니까? –
문제 없으며, ViewModels로 질문을 업데이트했습니다. – Thompson95
정확히 작동하지 않는 것은 무엇입니까? Visual Studio 출력의 모든 바인딩 오류? – Evk