У меня есть эта простая страница WPF
, в которой я добавляю локальный ресурс, который имеет свое определение в бэкэнд-файле страницы.локальный ресурс не отображается на странице WPF
<Page x:Class="WindowsSampleApplication.ValueConverter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WindowsSampleApplication"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="ValueConverter">
<Page.Resources>
<local:YesNoToBooleanConverter x:Key="YesNoToBooleanConverter" />
</Page.Resources>
<Grid>
<StackPanel Margin="10">
<TextBox Name="txtValue" />
<WrapPanel Margin="0,10">
<TextBlock Text="Current value is: " />
<TextBlock Text="{Binding ElementName=txtValue, Path=Text, Converter={StaticResource YesNoToBooleanConverter}}"></TextBlock>
</WrapPanel>
<CheckBox IsChecked="{Binding ElementName=txtValue, Path=Text, Converter={StaticResource YesNoToBooleanConverter}}" Content="Yes" />
</StackPanel>
</Grid>
</Page>
и это файл бэкенд для Page
namespace WindowsSampleApplication
{
public partial class ValueConverter : Page
{
public ValueConverter()
{
InitializeComponent();
}
public class YesNoToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch (value.ToString().ToLower())
{
case "yes":
return true;
case "no":
return false;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool)
{
if ((bool)value == true)
return "yes";
else
return "no";
}
return "no";
}
}
}
}
Я правильно включены имен WindowsSampleApplication
в Page
уровне и то же пространство имен имеет определение для моего ресурса. Но я получаю ниже error
когда добавил, что local resource
Я только начал с WPF
учебники из here, но единственное, что я пытался, а не следовать учебник был я добавил страницу вместо Окно, так как я создал Window
уже с более ранними демонстрациями, указанными там, и, надеюсь, я преобразовал все, что Page должно быть вместо Window. У кого-нибудь есть идея о том, как решить эту проблему?
UPDATE
Я также попытался обертывание <local..../>
жгутов <ResourceDictionary>
я готов его в SO, но не много пользы и ошибок все еще остается, как есть.
Хорошо, тогда он говорит ** Вложенные свойства не поддерживаются ** .. :( –
Ах, моя ошибка! Вы не можете использовать вложенные классы вообще. Просто попробуйте объявить конвертер непосредственно в пространстве имен WindowsSampleApplication. сделаю, я изменю свой ответ –
Бадди .. Это фактический ответ .. Я потерял класс конвертера внутри 'ValueConverter' путем надзора. Они правильно задали ** DEMO **. Фактически он должен быть снаружи. Я тоже нашел это. Пожалуйста, уточните ответ, и я соглашусь с ним ... :) Спасибо за ваше время. –