Как изменить видимость изображения в шаблоне данных? - PullRequest
1 голос
/ 21 сентября 2011

У меня есть изображение, которое находится внутри таблички данных, и я хочу иметь возможность настроить его видимость. Код выглядит примерно так:

<DataTemplate DataType="{x:Type dvm:TaskViewModel}">
....
<Border Grid.Row="0" Grid.Column="2" Grid.RowSpan="2" Margin="2">
                            <Image  VerticalAlignment="Center"
                                    Margin="8,0,10,0"
                                    Style="{StaticResource ActionImage}"
                                    cal:Message.AvailabilityEffect="Disable"
                                    cal:Message.Attach="[Event MouseUp] = [Action RunTaskNow($DataContext)]"
                                    Source="..\..\Resources\Images\export.png"
                                    Visibility="{Binding CanRunTasks, Converter={StaticResource boolToCollapsed}}">
                            </Image>
                        </Border>
</DataTemplate>

CanRunTasks - это логическое свойство, которое находится позади модели представления, но отсутствует в TaskViewModel, представляющей тип данных шаблона данных.

1 Ответ

1 голос
/ 21 сентября 2011

Вы можете решить эту проблему следующим образом:

a) Доступ к тексту данных родительского элемента управления и свойству, к которому вы хотите получить доступ:

Visibility="{Binding DataContext.CanRunTask, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type <PARENTCONTROL>}}}"

где PARENTCONTROL - это элемент управления, который использует ваш DataTemplate

или

b) если вы создаете свои виртуальные машины в CodeBehind, вы можете внедрить вашу ParentViewModel в дочернюю viewModel например

   TaskViewModel tvm = new TaskViewModel(ParentViewModel parent)

    ....

в TaskViewModel:

public ParentViewModel Parent
{
    get{ return _parent;}
}

в XAML:

Visibility="{Binding Parent.CanRunTask
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...