كيف يمكنني ضبط نص الارتباط التشعبي WPF عبر ربط البيانات؟

StackOverflow https://stackoverflow.com/questions/140996

  •  02-07-2019
  •  | 
  •  

سؤال

في WPF، أريد إنشاء ارتباط تشعبي ينتقل إلى تفاصيل الكائن، وأريد أن يكون نص الارتباط التشعبي هو اسم الكائن.الآن، لدي هذا:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>

لكنني أريد أن يكون "اسم الكائن" مرتبطًا بالاسم الفعلي للكائن.أود أن أفعل شيئًا كهذا:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>

ومع ذلك، لا تحتوي فئة الارتباط التشعبي على خاصية نص أو محتوى مناسبة لربط البيانات (أي خاصية تبعية).

أيه أفكار؟

هل كانت مفيدة؟

المحلول

يبدو غريبا، لكنه يعمل.نقوم بذلك في حوالي 20 مكانًا مختلفًا في تطبيقنا. Hyperlink يبني ضمنا أ <Run/> إذا قمت بوضع نص في "محتواه"، ولكن في .NET 3.5 <Run/> لن يسمح لك بالالتزام به، لذلك عليك استخدام صراحةً TextBlock.

<TextBlock>
    <Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
        <TextBlock Text="{Binding Path=Name}"/>
    </Hyperlink>
</TextBlock>

تحديث:لاحظ أنه اعتبارًا من .NET 4.0 تشغيل.خاصية النص يمكن الآن أن تكون ملزمة:

<Run Text="{Binding Path=Name}" />

نصائح أخرى

لقد نجح هذا بالنسبة لي في "الصفحة".

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>

في تطبيق Windows Store (وتطبيق Windows Phone 8.1 RT) لا يعمل المثال أعلاه، استخدم HyperlinkButton واربط خصائص Content وNavigateUri كالمعتاد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top