나는 사용자가 "큰"형태로 편집 할 수있는 응용 프로그램에서 작동 :UWP - ContentPresenter의 요소를 기본 ViewModel에 바인딩하는 방법?
- 양식은 필드를 많이 포함이 각 PivotItem이의 범주를 나타내는 피벗에 표시됩니다 형태.
- 일부 카테고리에는 하나 이상의 하위 항목이 포함되어 있습니다. Master-Detail 프레젠테이션을 통해 표시됩니다.
내가 모델에 직접 바인더 제본 된 ContentPresenter에를 사용하여 상세 부분의 항목을 표시하려면 :
<ContentPresenter
x:Name="DetailContentPresenter"
Grid.Column="1"
Grid.RowSpan="2"
BorderThickness="1,0,0,0"
Padding="24,0"
BorderBrush="{ThemeResource SystemControlForegroundBaseLowBrush}"
Content="{x:Bind MasterListView.SelectedItem, Mode=OneWay}">
<ContentPresenter.ContentTemplate>
<DataTemplate x:DataType="models:Form_Parts">
<...>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
이 잘 작동하지만, "세 번째"레벨은에있다 기본 양식 : GridView을 통해 ContentPresenter에 표시되는 사진 목록입니다. 이것은 훌륭하게 작동하지만 "Add"버튼이나 "ItemClick"이벤트를 사용하여 사진과 상호 작용하고 싶습니다. ContentPresenter의 DataContext 대신 기본 ViewModel에서 Command를 바인딩하는 방법을 알지 못합니다. 이 형식의 다른 필드는이 ViewModel에 잘 바인딩됩니다.
내가했던 어떤 결과없이 몇 가지 테스트 :
<StackPanel Orientation="Horizontal" Grid.Row="1">
<GridView ItemsSource="{Binding images}"
ItemClick="{Binding PhotoClickCommand}">
<GridView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1"
Padding="10"
Height="150" Width="190">
<Image Stretch="UniformToFill"
Source="{Binding bitmap_image}" />
</Border>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<Border BorderBrush="Gray" BorderThickness="1"
Padding="10"
Height="150" Width="190">
<Button Command="{Binding Path=DataContext.AddPhotoCommand, ElementName=DetailsPage}"
Height="100" Width="100">
<Viewbox>
<SymbolIcon Symbol="Add"/>
</Viewbox>
</Button>
</Border>
</StackPanel>
=>이 일을하는 방법이 있나요?
편집 : 내가 함께 "추가"버튼 덕분에 Alteik 내 문제를 해결 :
<Button Command="{Binding ElementName=Root, Path=DataContext.AddPhotoCommand}" Height="100" Width="100">
하지만 항상 의 GridView의 대해서 itemClick에 문제가 얻을. 내가하고자하는 반면, 보낸 사람이 현재 Form_Parts합니다 (ContentPresenter에의 DataTemplate을)입니다
private void EditPhoto(object sender)
{
Images sImage = (Images)sender;
if (sImage != null)
{
NavigationService.NavigateTo<CommentImageViewModel>(this, new Object[] { sImage }, true);
}
}
:이 시도 :
<GridView ItemsSource="{Binding images}"
IsItemClickEnabled="True"
SelectionMode="None">
<i:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Tapped">
<core:InvokeCommandAction Command="{Binding ElementName=Root, Path=DataContext.EditPhotoCommand}"
CommandParameter="{Binding Mode=OneWay}"/>
</core:EventTriggerBehavior>
</i:Interaction.Behaviors>
<...>
</GridView>
을하지만 뷰 모델의 예상 매개 변수를하지 않습니다 GridView에 바인딩 된 내 이미지 컬렉션의 선택한 항목을 가져옵니다. ...
=>이 문제를 해결하려면 어떻게해야합니까?
감사를 부모의 요소 "루트"의 이름을 설정해야 ! –
감사합니다. 도움이 되었으면 대답을 선택하십시오 :) – Ateik
예,하지만 같은 질문이 있습니다. GridView의 클릭 된 항목을 가져와야합니다.로 연주하려고했지만 클릭 한 항목을 매개 변수로 전달하지 않았습니다 ... 아이디어가 있습니까? 아니면이 질문에 대한 새로운 주제를 만들어야합니까? –