hi Я новичок в silverlight 4. У меня есть два переключателя в моих представлениях по имени Внутренний и Внешний в stackpanel1, которые привязаны к моей модели представления. в stackpanel2 у меня есть текстовый блок и кнопка. теперь то, что мне нужно, когда я выбираю внутреннюю кнопку сокета-переключателя, должен быть видимым и на внешнем выделенном стеке packpanel2 должен быть невидимым. так как я связываю свойство видимости stackpanel2 с моей моделью просмотра. pls решат проблему ma как можно скорее.Как связать свойство видимости панели стека
ответ
Вы должны добавить новое свойство Видимость в свою модель данных, а затем привязать это свойство к свойству stackpanel Visibility, в дальнейшем вы можете связать его с булевым свойством, но тогда вам понадобится конвертер. Преобразователи в silverlight преобразуют любое присвоенное значение в значение типа свойства.
Вы можете узнать, как построить конвертер здесь. http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-s-a-silverlight-value-converter-anyway.aspx
Я не получил u.Can u сделаю мне одолжение.Pls Покажите кодировку Convertor, xzml и viewmodel. – anuj
@anuj: текстовое ограничение на комментарии составляет 600 символов. Это не твиттер или SMS. Использование сокращений, таких как «u», а не «вас», не рекомендуется. – AnthonyWJones
@ Анчжу нет-проблем, вы должны добавить новый класс наследует его IValueConverter это будет ваш BOOL для видимости преобразователя, теперь у вас на Bind StackPanel Visibility свойства с Логическим свойством из вашей модели представления, как это:
<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
}
просто хочу, чтобы вы знаете, в моем случае преобразователь класс находится в папке «классов» в корне проекта. Надеюсь, что это решит вашу проблему.
ya it did.thanks много – anuj
FYI: «как можно скорее» считается грубым здесь, в SO. Это означает, что в вашей оценке ваш вопрос более важен, чем другие. – AnthonyWJones