2011-04-07 50 views
0

我有一个应用程序,由我的前任编写,使用WPF,但我对它并不十分熟悉。如何在XAML中使用WPF“行为”?

我不得不接受他编译的DLL,从this webpage获取源代码并将其转换为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被称为“BusyIndi​​cator.DLL”,与命名空间“b”的引用,然后B由成为网格的一个属性。不知何故。奇妙的。

有人可以猜测我如何引用现有项目中的“BusyIndi​​cator”代码吗?我意识到我可能已经遗漏了一些重要的信息,但我在这里很无能。

+0

你是什么意思?“我现在可以参考现有项目中”BusyIndi​​cator“代码了吗?”如果上面的代码工作,你已经有了一个参考。 – 2011-04-07 11:13:47

+0

对不起,我不清楚。上面的代码是现有的代码,它引用了一个DLL。此DLL无法在我们的终端服务器上运行。我已经得到了我认为是该DLL的源代码,并将其集成到了我的代码中。我现在有一些工作(希望)VB代码,但是非工作XAML必须改变以考虑到BusyIndi​​cator现在对于项目不可或缺的变化。上面的代码是原始代码,不起作用。 AUGH! – Frosty840 2011-04-07 11:20:11

回答

1

啊,在您发表评论之后,我似乎更清楚了。

所需要的只是将正确的名称空间添加到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"> 

在现货的********你必须插入其中BusyIndi​​cator控件类放置在命名空间。如果您在VB.NET中编写代码,请查看项目属性中的根名称空间。注意我删除了xmlns的汇编部分。

如果BusyIndi​​cator的名称空间是myAppName,则可以删除b别名,并将其替换为xaml,其中指向该名称空间的l

+0

我曾尝试过这样做,但它不起作用,因为我必须删除对“BusyIndi​​catorBehaviour”的所有引用,编译,然后再添加引用。我已经忘记了WPF的“特性”。谢谢。知道我正朝着正确的方向前进,让我探索其它原因无效的其他原因。 – Frosty840 2011-04-07 11:36:17

+0

不客气! – 2011-04-07 11:37:24