Как использовать WPF «поведение» в XAML? - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть приложение, написанное моим предшественником, которое использует WPF, но я действительно не очень хорошо с ним знаком.

Мне пришлось взять скомпилированную им DLL-библиотеку, получитьИсходный код этой веб-страницы и преобразование его в VB, поскольку скомпилированная DLL, которая в прошлом работала на настольных установках, отказывалась работать на наших терминальных серверах.

Итак, у меня естьвзял код C # и преобразовал

public static class BusyIndicatorBehavior

в

Public Module BusyIndicatorBehavior

Я удалил пространство имен верхнего уровня (пространство имен ScrumSprintMonitor.UI.Wpf.Behaviors), потому что я действительно не 'Я не знаю, что он должен представлять, и теперь, честно говоря, я не знаю, как ссылаться на это в имеющемся у меня коде XAML.

Существующий код выглядит следующим образом:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MainWindow"
x:Name="Window"
Title="{Binding Path=WindowTitle}"
UseLayoutRounding="True"

xmlns:l="clr-namespace:myAppName"
xmlns:b="clr-namespace:BusyIndicator;assembly=BusyIndicator" WindowState="Maximized">

<Window.Resources>
    <ResourceDictionary Source="ResourceDictionary.xaml" />
</Window.Resources>
<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FF8B8B8B" Offset="0"/>
            <GradientStop Color="#FF484848" Offset="1"/>
        </LinearGradientBrush>
    </Grid.Background>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid Grid.Column="0" x:Name="grdFolder" b:BusyIndicatorBehavior.BusyState="{Binding Path=BusyState}">

КакВы можете видеть, что ранее работавшая DLL была названа "BusyIndicator.DLL", на нее ссылается пространство имен "b", а затем b превращается в свойство Grid.Каким-то образом.Волшебным образом.

Может кто-то догадаться, как я могу ссылаться на код "BusyIndicator", который я получил из существующего проекта?Я понимаю, что, вероятно, пропустил кучу важной информации, но я бегу здесь довольно невежественно.

1 Ответ

1 голос
/ 07 апреля 2011

Ах, после вашего комментария это кажется мне более понятным.

Все, что нужно, это добавить правильное пространство имен в xaml.

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="MainWindow"
    x:Name="Window"
    Title="{Binding Path=WindowTitle}"
    UseLayoutRounding="True"

    xmlns:l="clr-namespace:myAppName"
    xmlns:b="clr-namespace:********" WindowState="Maximized">

В месте ******** необходимо вставить пространство имен, в котором находится класс BusyIndicator. Если вы пишете в VB.NET, взгляните на корневое пространство имен в свойствах проекта. Обратите внимание, что я удалил сборочную часть xmlns.

Если пространством имен BusyIndicator является myAppName, вы можете удалить псевдоним b и заменить его в xaml на l, который ссылается на это пространство имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...