Как связать свойство видимости стека - PullRequest
0 голосов
/ 09 февраля 2011

Привет, я новичок в Silverlight 4. У меня есть два переключателя в моих представлениях с именем Внутренний и Внешний в stackpanel1, которые связаны с моей моделью представления.в stackpanel2 у меня есть текстовый блок и кнопка.Теперь то, что мне нужно, когда я выбираю внутреннюю кнопку-переключатель stackpanel2, должно быть видно, а на внешнем выделении stackpanel2 должна быть невидимой.так как я связываю свойство видимости stackpanel2 с моей моделью представления.Пожалуйста, решите ма проблему как можно скорее.

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

@ без проблем, вам нужно добавить новый класс, наследуйте его с IValueConverter, это будет ваш конвертер bool to visibility, теперь вам нужно привязать свойство видимости StackPanel с логическим свойством из вашей модели представления, например так:

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:GreenScreenApp.classes" x:Class="GreenScreenApp.one" >
<UserControl.Resources>
    <local:VisibilityConverter x:Key="BoolToVisibilityConverter"/>
</UserControl.Resources>
<Grid DataContext="MyDataSource" x:Name="LayoutRoot" >
    <StackPanel x:Name="stackpanel2" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisibilityConverter}}">
    </StackPanel>
</Grid>

у вас должно быть свойство с именем "IsVisible" в контексте данных.Конвертер преобразует логические значения и возвращает значения видимости.

Код конвертера

    public class VisibilityConverter : IValueConverter
{

    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var v = value;

        if (v == "true")
            return "Visible";
        else
            return "Collapsed";

    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

просто хочу сообщить, что в моем случае класс конвертера находится в папке "classes" вкорень проекта.Надеюсь, это решит вашу проблему.

0 голосов
/ 09 февраля 2011

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

Вы можете узнать, как построить конвертер здесь. http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-s-a-silverlight-value-converter-anyway.aspx

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