2011-04-07 95 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