На мой взгляд, который является UserControl У меня есть ListView, который имеет несколько GridViewColumns, и мне было интересно, можно ли связать first GridViewColumns с ImageTypesПолучить / установить свойство в моем ViewModel и двух других столбцах для другого свойства WorkflowData GetSet в ViewModel?
Причина в том, что мой первый столбец будет получен из списка изображений, а другие столбцы - из данных.хранится в моей базе данных.
В настоящее время я не могу найти правильные привязки для отображения значков в списке вместе с другими данными, поступающими из модели (через ViewModel).Нужно ли мне устанавливать «RelativeSource» в привязке для изображения?
Из моего примера вы увидите, что я пока просто пытаюсь показать одно изображение, передавая uri в виде строки.
Любая помощь будет оценена.Спасибо
XAML Просмотреть фрагмент
<UserControl x:Class="Project.View.WorkflowStatus"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mvvmtk="clr-namespace:MVVMToolkit"
Height="Auto"
xmlns:local="clr-namespace:Project.ViewModel">
<UserControl.DataContext>
<local:WorkflowStatusViewModel />
</UserControl.DataContext>
<ListView Grid.Column="0" Grid.Row="1"
ItemsSource="{Binding Path=WorkflowData.WFTasks, Mode=TwoWay}"
SelectedValue="{Binding Workflow.WFTask}"
HorizontalContentAlignment="Stretch">
<ListView.View>
<GridView>
<GridViewColumn Header="" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Image Source="{Binding ImageTypes, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type local:WorkflowStatusViewModel}}}"
Stretch="None"></Image>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Field1"
Width="50"
DisplayMemberBinding="{Binding Path=Field1Value1}"></GridViewColumn>
<GridViewColumn Header="Field2"
Width="50"
DisplayMemberBinding="{Binding Path=Field1Value2}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</UserControl>
Просмотреть фрагмент модели
/// <summary>
// This is the main class which links the Model and View together.
/// </summary>
public class WorkflowStatusViewModel
{
/// <summary>
// Create a public instance of the workflow Model
/// </summary>
public WorkflowModel WorkflowData { get; set; }
/// <summary>
/// Class Constructor
/// </summary>
public WorkflowStatusViewModel()
{
InitialiseData();
}
///MatterManagerView;component/Assets/Task.png
private string _ImageTypes;
public string ImageTypes
{
get { return "Project;component/Assets/Task.png"; }
set { _ImageTypes = value; }
}
/// <summary>
// Private function that create all the neccessary objects
/// </summary>
private void InitialiseData()
{
try
{
// Create a new instance of the Workflow Model
WorkflowData = new WorkflowModel();
}
// Write Errors captured to Aderant Logging object
catch (Exception ex)
{
}
}
РЕДАКТИРОВАТЬ: Основано на предложении Марселя япопытался сопоставить изображение с использованием RelativeSource