2011-12-28 37 views
0

我正在製作一個類似於PowerPoint的程序,用於更改顯示生產數據的某些幻燈片。我正在處理通常出現在屏幕左側的幻燈片選擇器部分。您選擇一張幻燈片,並在我的網格的主要部分顯示較大的幻燈片。我製作了其他頁面的幻燈片模板,我以幀爲主機。注意:使用C#在列表框中選定項目的框架部分,類似於PowerPoint幻燈片選擇器

做幻燈片選擇,我做了以下的DataTemplate列表框:

<DataTemplate x:Key="SlideSelector"> 
     <Border BorderBrush="Silver" BorderThickness="1" Padding="3" CornerRadius="5" Height="120" Width="200"> 
      <Viewbox> 
       <Frame Height="656" Width="1360" Source ="{Binding Path=SlideURL}"/> 
      </Viewbox> 
      </Border> 
    </DataTemplate> 

列表框:

<ListBox Name="SlideSelectorListBox" SelectedItem="{Binding SelectedSlide}" ItemsSource="{Binding Path=Slides}" ItemTemplate="{StaticResource SlideSelector}"/> 

的項目是通過一個可觀察的集合,是加綁定到itemsource。每個框架通過綁定到數據模板中的SlideURL導航到它的幻燈片模板。

我的問題是,這會顯示堆疊在列表框中的交互式頁面,我只能通過單擊該項目的邊框來選擇該項目。我不希望它們在列表框中處於交互狀態,我只是希望它成爲幻燈片的圖片,並在更改時更新。有沒有辦法顯示框架,但沒有啓用它,並點擊它在列表框中選擇該項目?

獎勵積分:當我將這些參數添加到列表中時,將參數傳遞給這些頁面。

回答

0

取代託管框架,您可以託管運行時生成的框架圖像。真的,你可以做的是在你的Slide對象中存儲一個圖像屬性,如果一個屬性發生了變化,偶爾會更新一個圖像屬性,並將圖像控件綁定到該屬性上。

您可以很容易地從wpf元素創建圖像。

Public Shared Function GetBitmapSource(ByVal element As FrameworkElement) As BitmapSource 

     Dim visual As New DrawingVisual() 
     Dim context As DrawingContext = visual.RenderOpen() 
     Dim elementBrush As New VisualBrush(element) 
     Dim w As Integer = CInt(element.ActualWidth) 
     Dim h As Integer = CInt(element.ActualHeight) 
     context.DrawRectangle(elementBrush, Nothing, New Rect(0, 0, w, h)) 
     context.Close() 

     Dim bitmap As New RenderTargetBitmap(w, h, 96, 96, PixelFormats.[Default]) 
     bitmap.Render(visual) 
     Return bitmap 
    End Function 

要使用,拉的BitmapSource成矩形填充的圖像刷:

Me.rectFormPreview.Fill = New ImageBrush(_objViewFolders(Me.lbFormList.SelectedIndex).ViewBitmapSource) 

你可以擁有的BitmapSource作爲階級屬性,並傳遞通過轉換器(凌亂在我看來)或者你可以有一個ImageBrush類型的屬性來代替(最好的methinks)。

+0

嗯,我在C#中工作,所以我將不得不嘗試翻譯你的語法 – JonD 2011-12-28 17:56:19

+0

kk,我已經修改了所有的語法,所以你認爲我可以通過頁面作爲一個元素,並得到它? – JonD 2011-12-28 18:34:13

+0

我猜它不是那麼簡單: bitmapImage = GetBitmapSource(myPageView.xaml); – JonD 2011-12-28 18:41:49

0

爲什麼不嘗試在「框架」頂部添加一個填充的矩形,並設置儘可能低的alpha以查看您的框架。像那樣,鼠標將與矩形進行交互。

+0

我該如何在上面添加一個矩形?你有代碼片段嗎? – JonD 2011-12-28 17:52:19

+0

2011-12-29 12:35:01

+0

問題:爲什麼要指定高度/寬度只要它在列表框中?它應該得到listboxitem的大小,其餘的將被裁剪我猜。 – 2011-12-29 12:36:18