Gibt es eine Möglichkeit, eine Änderung in der Text-Eigenschaft eines TextBlock-Elements mithilfe von Ereignissen zu erkennen?Wie erkennt man eine Änderung in der Eigenschaft Text eines TextBlocks?
Antwort
Soweit ich verstehen kann, gibt es kein Textchanged-Ereignis in TextBlock-
(Text-Eigenschaft, deren Änderung in einem Datagrid Ich versuche, für eine Animation zu schaffen, die Textblöcke Hervorhebung). Wenn ich auf Ihre Anforderung eingehe, wäre eine Neugestaltung einer Textbox ebenfalls keine praktikable Lösung. Von meiner vorläufigen Suche, this scheint eine mögliche Lösung zu sein.
Das ist genau das, was ich tun wollte. Vielen Dank. –
Hier ist ein ähnliches Beispiel auf MSDN unter Verwendung von Code-Behind: http://msdn.microsoft.com/en-us/library/system.windows.data.binding.targetupdated.aspx
Dieser aus dem Link in bioskope Antwort, aber Simplied.
<TextBlock Text="{Binding YourTextProperty, NotifyOnTargetUpdated=True}"
TargetUpdated="YourTextEventHandler"/>
Durch die Verwendung des Codes hinter Event, sollte dies meiner Meinung nach die richtige Antwort sein. –
Binden Sie die Eigenschaft Text in ein DependencyProperty, die einen Ereignisauslöser hat:
public static string GetTextBoxText(DependencyObject obj)
{
return (string)obj.GetValue(TextBoxTextProperty);
}
public static void SetTextBoxText(DependencyObject obj, string value)
{
obj.SetValue(TextBoxTextProperty, value);
}
public static readonly DependencyProperty TextBoxTextProperty =
DependencyProperty.RegisterAttached(
"TextBoxText",
typeof(string),
typeof(TextBlockToolTipBehavior),
new FrameworkPropertyMetadata(string.Empty, TextBoxTextChangedCallback)
);
private static void TextBoxTextChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
TextBlock textBlock = d as TextBlock;
HandleTextChange(textBlock);
}
Im XAML binden an den Textblock Text Eigentum:
<TextBlock
Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}"
th:TextBlockBehavior.TextBoxText="{Binding Text,
RelativeSource={RelativeSource Self}}" />
Hier ist etwas, das Sie verwenden können, Ich habe von Jerry Nixon und Daren May in der Microsoft Virtual Academy "Developing Universal Windows Apps with C# and XAML" abgeholt und der Code, der die DependencyObject-Logik enthält, ist hier "(W8.1-WP8.1) UNIVERSAL APP FOR MVA".
namespace App1.Behaviors
{
// <summary>
/// Helper class that allows you to monitor a property corresponding to a dependency property
/// on some object for changes and have an event raised from
/// the instance of this helper that you can handle.
/// Usage: Construct an instance, passing in the object and the name of the normal .NET property that
/// wraps a DependencyProperty, then subscribe to the PropertyChanged event on this helper instance.
/// Your subscriber will be called whenever the source DependencyProperty changes.
/// </summary>
public class DependencyPropertyChangedHelper : DependencyObject
{
/// <summary>
/// Constructor for the helper.
/// </summary>
/// <param name="source">Source object that exposes the DependencyProperty you wish to monitor.</param>
/// <param name="propertyPath">The name of the property on that object that you want to monitor.</param>
public DependencyPropertyChangedHelper(DependencyObject source, string propertyPath)
{
// Set up a binding that flows changes from the source DependencyProperty through to a DP contained by this helper
Binding binding = new Binding
{
Source = source,
Path = new PropertyPath(propertyPath)
};
BindingOperations.SetBinding(this, HelperProperty, binding);
}
/// <summary>
/// Dependency property that is used to hook property change events when an internal binding causes its value to change.
/// This is only public because the DependencyProperty syntax requires it to be, do not use this property directly in your code.
/// </summary>
public static DependencyProperty HelperProperty =
DependencyProperty.Register("Helper", typeof(object), typeof(DependencyPropertyChangedHelper), new PropertyMetadata(null, OnPropertyChanged));
/// <summary>
/// Wrapper property for a helper DependencyProperty used by this class. Only public because the DependencyProperty syntax requires it.
/// DO NOT use this property directly.
/// </summary>
public object Helper
{
get { return (object)GetValue(HelperProperty); }
set { SetValue(HelperProperty, value); }
}
// When our dependency property gets set by the binding, trigger the property changed event that the user of this helper can subscribe to
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var helper = (DependencyPropertyChangedHelper)d;
helper.PropertyChanged(d, e);
}
/// <summary>
/// This event will be raised whenever the source object property changes, and carries along the before and after values
/// </summary>
public event EventHandler<DependencyPropertyChangedEventArgs> PropertyChanged = delegate { };
}
}
Nutzungs XAML:
<TextBlock Grid.Row="0"
x:Name="WritingMenuTitle"
HorizontalAlignment="Left"
FontSize="32"
FontWeight="SemiBold"
Text="{Binding WritingMenu.Title}"
TextAlignment="Left"
TextWrapping="Wrap"/>
Nutzungs xaml.cs:
Behaviors.DependencyPropertyChangedHelper helper = new Behaviors.DependencyPropertyChangedHelper(this.WritingMenuTitle, Models.CommonNames.TextBlockText);
helper.PropertyChanged += viewModel.OnSenarioTextBlockTextChangedEvent;
Nutzungs viewmodel.cs:
public async void OnSenarioTextBlockTextChangedEvent(object sender, DependencyPropertyChangedEventArgs args)
{
StringBuilder sMsg = new StringBuilder();
try
{
Debug.WriteLine(String.Format(".....WritingMenuTitle : New ({0}), Old ({1})", args.NewValue, args.OldValue));
}
catch (Exception msg)
{
#region Exception
.....
#endregion
}
}
Sein leichter als das lol. Späte Antwort, aber viel einfacher.
// assume textBlock is your TextBlock
DependencyPropertyDescriptor dp = DependencyPropertyDescriptor.FromProperty(TextBlock.TextProperty, typeof(TextBlock));
dp.AddValueChanged(textBlock, (object a, EventArgs b) =>
{
MessageBox.Show("text changed");
});
Wo setzt du dp.AddValueChanged? – wbt11a
geladen oder Konstruktor würde wie ein guter Ort klingen. –
- 1. Wie erkennt man eine Änderung in HTML-Element in jQuery
- 2. Binden eines TextBlocks an die Eigenschaft eines Fensters
- 3. Wie erkennt man eine Eigenschaft Rückgabetyp in Objective-C
- 4. WPF: Drucken eines mehrseitigen TextBlocks
- 5. Sichtbare Zeilenanzahl eines TextBlocks
- 6. Wie ändere ich die Hintergrundfarbe eines Textblocks in Silverlight?
- 7. Wie erkennt man eine Git SHA ID in einem Text
- 8. wie man CharacterEllipsis am Anfang des Textblocks in wpf hinzufügt?
- 9. Dynamisches Objekt - Wie erkennt man, ob eine Eigenschaft definiert ist?
- 10. Höhe eines Textblocks in einer Konsolenanwendung ermitteln
- 11. Änderung der UITableView-Eigenschaft?
- 12. Erhalte die Zeilen des TextBlocks gemäß der TextWrapping-Eigenschaft?
- 13. Platzieren Sie ein Bild in der Mitte eines Textblocks
- 14. Delegieren Kontrolle bei Änderung eines Wertes/Eigenschaft
- 15. Angular 2 - Wie erkennt eine Komponente eine URL-Änderung?
- 16. Wie berechne ich die gerenderte Position der Ecken eines Textblocks?
- 17. Programmatische Änderung der ID-Eigenschaft von UIBarButtonItem
- 18. Wie erkennt man eine Berührung eines Kindes Sprite
- 19. Javascript - Wie erkennt man eine Elementbreitenänderung?
- 20. Wie erkennt man den Blattwechsel eines Benutzers?
- 21. Wie erkennt man eine Firewall in Windows?
- 22. Wie überwacht man eine Array-Eigenschaft eines Array-Arrays?
- 23. Bedingte Verhinderung der Änderung des Textkastens
- 24. Dynamische Änderung der Spaltenüberschrift Text in JTable
- 25. Änderung der verschachtelten Eigenschaft für Komponenteneingang
- 26. Höhe eines Textblocks mit einer festen Breite in PHP berechnen
- 27. UWP: Trimmen des Textes eines TextBlocks basierend auf der Anzahl der Zeilen
- 28. WPF - Wie setze ich standardmäßig die Sichtbarkeit eines datengebundenen Textblocks?
- 29. Wie erkennt man ein Klicken eines Gitters in einem Iframe?
- 30. Wie erkennt man die Frequenz eines Sounds in JavaScript?
einen Blick auf diese: http://stackoverflow.com/a/2964694/2550529 – SepehrM