編集:コンバーターを実装しようとしたときのGettignXaml解析エラー
エラー:「System.Windows.Markup.StaticResourceHolder」に値を指定すると、例外がスローされました。
<DataTemplate>
<myClasses:RegistrationButton x:Name="RegistrationButton" HorizontalAlignment="Center" Height="71" Width="148"
Margin="10,0,5,0"
Style="{DynamicResource ButtonStyleRegistration}"
Click="RegistrationButton_Click"
Title="{Binding Title}"
Oorzaak="{Binding Oorzaak}"
DuurStilstand="{Binding DuurStilstand,
Converter={StaticResource DateTimeConvertor},
ConverterParameter=\{0:t\}}"
BeginStilstand="{Binding BeginStilstand}"
/>
</DataTemplate>
IValueConvertor:
public class DateTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// Retrieve the format string and use it to format the value.
string formatString = parameter as string;
if (!string.IsNullOrEmpty(formatString))
{
return string.Format(culture, formatString, value);
}
// If the format string is null or empty, simply call ToString()
// on the value.
return value.ToString();
}
// No need to implement converting back on a one-way binding
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
現在、バインディングを使用してすべてを正しく表示するStringDependencyプロパティがあります。ただし、このプロパティは代わりにDateTimeにする必要があります。私は計算のためにアプリケーション全体で文字列を使用していますが、これは代わりに1つのDateTime値で実行する必要があります。
これをDateTimeに変更しようとすると、バインディングエラーしか発生しません。プロパティがString型である前。
public static readonly DependencyProperty DuurStilstandProperty =
DependencyProperty.Register("DuurStilstand", typeof(DateTime), typeof(RegistrationButton), new UIPropertyMetadata(""));
public DateTime DuurStilstand
{
get { return (DateTime)GetValue(DuurStilstandProperty); }
set { SetValue(DuurStilstandProperty, value); }
}
XAMLバインディング:
<TextBlock x:Name="tbDuurStilstand" TextWrapping="Wrap"
Text="{Binding DuurStilstand, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="7.5,5,0,0" Height="24.8266666666667"/>
<ListBox.ItemTemplate>
<DataTemplate>
<myClasses:RegistrationButton x:Name="RegistrationButton" HorizontalAlignment="Center" Height="71" Width="148"
Margin="10,0,5,0"
Style="{DynamicResource ButtonStyleRegistration}"
Click="RegistrationButton_Click"
Title="{Binding Title}"
Oorzaak="{Binding Oorzaak}"
DuurStilstand="{Binding DuurStilstand}"
BeginStilstand="{Binding BeginStilstand}"
/>
</DataTemplate>
</ListBox.ItemTemplate>
ここにエラーが表示されます(XamlParseException):
<myClasses:RegistrationButton x:Name="btnTestRegistration" Content="Test Registratie" HorizontalAlignment="Left" Margin="16.8,0,0,118.14"
VerticalAlignment="Bottom" Width="119.2" Height="30.2" FontSize="18.667" Click="btnTestRegistration_Click" Style="{DynamicResource ButtonStyleRegistration}" />
これをDateTimeに変更できないのはなぜですか。
テキストブロックには、現在取得しているDateTimeではなくStringが必要です。コンテンツがテキストブロックの.textプロパティに配置されたときに、DateTimeを文字列に変換することをどの程度正確に確認できますか?
よろしく、PeterP