Простой GridViewColumn обязательный вопрос - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть ListView с несколькими GridViewColumn.В одном из столбцов я показываю видимость слоев, и я связал значок и непрозрачность, но я не уверен, как связать его со свойством IsVisible, чтобы при щелчке элемента в этом столбце он переключалсяIsVisible логическое значение.

Любые идеи о том, как это сделать?

<GridViewColumn Width="20">
    <GridViewColumnHeader Content="X" />
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Width="18"
                Height="18"
                Source="{Binding VisibleIcon}"
                        Opacity="{Binding VisibleOpacity}"
                        />
            </StackPanel>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

Кроме того, VisibleOpacity определяет Opacity для значка, но я чувствую, что это не такхороший способ сделать это, потому что я должен был создать это свойство исключительно для этой цели.Есть ли способ сделать это inline в xaml?Может быть, как:

Opacity = (this.IsVisible) ? 1 : 0.5;

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

РЕДАКТИРОВАТЬ: хорошо, так что я думаю, что это должно быть хорошо сейчас ..

Все еще предполагая, что ваша коллекция представляет собой коллекцию:

public class Effect : INotifyPropertychanged
{
    //Some properties


    private bool isVisible;
    public bool IsVisible
    {
        get { return isVisible;}
        set { isVisible=value;//plus raise propertychanged notification}
    }      
}

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

<ToggleButton x:Name="tgBtn" Height="20" Width="20" IsChecked="{Binding IsVisible}" 
              BorderThickness="0" Background="Transparent" >
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Image Width="18"
                           Height="18"                 
                           Source="C:\USERS\thumbnail.jpeg">
                            <Image.Style>
                                <Style TargetType="{x:Type Image}">
                                    <Setter Property="Opacity" Value="1"/>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding ElementName=tgBtn, Path=IsChecked}" Value="false">
                                            <Setter Property="Opacity" Value="0.5"/>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Image.Style>
                        </Image>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ToggleButton.Style>
</ToggleButton>
1 голос
/ 19 апреля 2011

Не знаю, что вам нужно значение непрозрачности, чтобы изменить. Вам необходимо привязать свойство Visibility к изображению и использовать конвертер для перехода от логического значения IsVisible к значению перечисления Visibility.

См. http://www.jeff.wilcox.name/2008/07/visibility-type-converter/

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