他の誰かが指摘したように、そのエラーが発生する理由Inlines
はありません。Dependency Property
過去に同様の状況に遭遇したとき、Attached Properties
/Behaviors
が良い解決策であることがわかりました。FName
それは typeであると仮定しstring
ます。したがって、添付プロパティもそうです。次に例を示します。
class InlinesBehaviors
{
public static readonly DependencyProperty BoldInlinesProperty =
DependencyProperty.RegisterAttached(
"BoldInlines", typeof(string), typeof(InlinesBehaviors),
new PropertyMetadata(default(string), OnBoldInlinesChanged));
private static void OnBoldInlinesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var textBlock = d as TextBlock;
if (textBlock != null)
{
string fName = (string) e.NewValue; // value of FName
// You can modify Inlines in here
..........
}
}
public static void SetBoldInlines(TextBlock element, string value)
{
element.SetValue(BoldInlinesProperty, value);
}
public static string GetBoldInlines(TextBlock element)
{
return (string) element.GetValue(BoldInlinesProperty);
}
}
次に、これを次のように使用できます (my
は、 を含む名前空間を指す xml 名前空間ですAttachedProperty
)。
<TextBlock my:InlinesBehaviors.BoldInlines="{Binding FName}" />
上記のバインディングはマルチ バインディングである可能性があり、コンバーターなどを使用することもできます。Attached Behaviors
は非常に強力で、これはそれらを使用するのに適した場所のようです。
また、興味のある方は、に関する記事をご覧くださいAttached Behaviors
。