डेटा स्रोत पर चयनित टेक्स्ट को बाध्य करने का कोई सीधा तरीका नहीं है, क्योंकि यह निर्भरता प्रॉपर्टी नहीं है ... हालांकि, एक संलग्न संपत्ति बनाने में काफी आसान है जिसे आप बाध्य कर सकते हैं।
यहाँ एक बुनियादी कार्यान्वयन है:
public static class TextBoxHelper
{
public static string GetSelectedText(DependencyObject obj)
{
return (string)obj.GetValue(SelectedTextProperty);
}
public static void SetSelectedText(DependencyObject obj, string value)
{
obj.SetValue(SelectedTextProperty, value);
}
// Using a DependencyProperty as the backing store for SelectedText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedTextProperty =
DependencyProperty.RegisterAttached(
"SelectedText",
typeof(string),
typeof(TextBoxHelper),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, SelectedTextChanged));
private static void SelectedTextChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
TextBox tb = obj as TextBox;
if (tb != null)
{
if (e.OldValue == null && e.NewValue != null)
{
tb.SelectionChanged += tb_SelectionChanged;
}
else if (e.OldValue != null && e.NewValue == null)
{
tb.SelectionChanged -= tb_SelectionChanged;
}
string newValue = e.NewValue as string;
if (newValue != null && newValue != tb.SelectedText)
{
tb.SelectedText = newValue as string;
}
}
}
static void tb_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox tb = sender as TextBox;
if (tb != null)
{
SetSelectedText(tb, tb.SelectedText);
}
}
}
फिर आप XAML में उस तरह इसका इस्तेमाल कर सकते हैं:
<TextBox Text="{Binding Message}" u:TextBoxHelper.SelectedText="{Binding SelectedText}" />
स्रोत
2010-02-11 17:14:41
धन्यवाद !! यह चाल है। इतना स्पष्ट और मैंने इसे याद किया। एक बार फिर धन्यवाद। – Eric
मैं CaretIndex संपत्ति के लिए ऐसा करने की कोशिश कर रहा हूं लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। क्या आप – TheITGuy
@TheITGuy की सहायता कर सकते हैं, न कि आपके कोड को देखे बिना ... आपको शायद एक नया प्रश्न बनाना चाहिए (आप यहां लिंक पोस्ट कर सकते हैं, अगर मैं कर सकता हूं तो मैं जवाब दूंगा) –