Heute habe ich versucht aus XAML direkt eine statische Methode aufzurufen und diese auch noch zwei Parameter zu übergeben. Die Methode soll einen String zurückgeben. Das ohne CodeBehind, Presenter oder ViewModel.

Als ich die Frage dann auf StackOverflow stellte, wurde ich auf den ObjectDataProvider verwiesen.

So sieht das ganze dann aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<UserControl x:Class="CustomersModul.Views.TopMenuItem"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:lang="clr-namespace:LanguageModule;assembly=LanguageModule"
    xmlns:System="clr-namespace:System;assembly=mscorlib">
 
    <UserControl.Resources>
        <ObjectDataProvider x:Key="TranslateCustomer"  ObjectType="{x:Type lang:Translate}" MethodName="GetString">
            <ObjectDataProvider.MethodParameters>
                <System:String>Customers</System:String>
                <System:String>Customer</System:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </UserControl.Resources>
 
    <StackPanel Orientation="Horizontal">
        <Image Source="../Images/folder.png" Width="16" Height="16" Margin="0 0 5 0"/>
        <TextBlock Text="{Binding Source={StaticResource TranslateCustomer}}"/>
    </StackPanel>
 
</UserControl>


Mein Kollege meint zwar, ist etwas Quick&Dirty, aber für eines ist diese Lösung wunderbar einzusetzen. Und zwar wenn man dem Grafiker der im Expression arbeitet, einen Mock von Daten bereitstellen will.

Genau das kann man mit den ObjectDataProvider realisieren.

Ich fang an WPF und Konsorten zu lieben : )

Statische Methoden aus XAML aufrufen
Markiert in: