3 Stimmen

Wie bekommt man einen Textblock mit TextTrimming über einen AdornedElementPlaceholder?

Ich versuche, eine ValidationRule zu erhalten, um Text über eine beleidigende Combobox anzuzeigen, wenn der Benutzer einen Wert noch nicht angegeben hat. Ich kann es anzeigen, aber ich kann nicht scheinen, um den Text zu bekommen, um die Größe der Combobox mit TextTrimming="CharacterEllipsis" passen. Wie kann ich erreichen, dass der TextBlock in die Combobox passt und sich auch korrigiert, wenn der Benutzer die Größe des Fensters ändert?

Hier ist mein MainWindow.xaml:

<Window x:Class="PocAdornedElementPlaceholder.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:PocAdornedElementPlaceholder"
        Title="MainWindow" Height="200" Width="150">
    <Window.Resources>
        <ControlTemplate x:Key="ValidationTemplate">
            <Grid HorizontalAlignment="Center">
                <AdornedElementPlaceholder/>
                <TextBlock Foreground="Red" 
                           TextTrimming="CharacterEllipsis" 
                           Text="{Binding ErrorContent}" 
                           IsHitTestVisible="False" 
                           VerticalAlignment="Center" 
                           Margin="5,0,0,0"/>
            </Grid>
        </ControlTemplate>
    </Window.Resources>
    <Grid>
        <ComboBox Margin="10" 
                  Validation.ErrorTemplate="{StaticResource ValidationTemplate}"  
                  VerticalAlignment="Center"  
                  ItemsSource="{Binding Options}">
            <ComboBox.Text>
                <Binding Path="SelectedValue">
                    <Binding.ValidationRules>
                        <local:MyValidationRule ValidatesOnTargetUpdated="True" />
                    </Binding.ValidationRules>
                </Binding>
            </ComboBox.Text>
        </ComboBox>
    </Grid>
</Window>

Hier ist meine MainWindow.xaml.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Options = new List<string>() { "Value 1", "Value 2", "Value 3", "" };
        this.DataContext = this;
    }

    public string SelectedValue { get; set; }
    public List<string> Options { get; set; }
}

Und hier ist meine Datei MyValidationRule.cs:

public class MyValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        if (string.IsNullOrEmpty((string)value))
            return new ValidationResult(false, "Value cannot be empty!");
        return new ValidationResult(true, null);
    }
}

Für jede Hilfe wären wir dankbar! Danke! Tam

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X