Silverlight Telerik控制項學習:RadComboBox之自動完成(AutoComplete)

來源:互聯網
上載者:User

直接:

Xaml部分代碼:

<UserControl xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"  x:Class="Telerik.Sample.AutoComplete"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    xmlns:common ="clr-namespace:Common.Silverlight;assembly=Common.Silverlight"    xmlns:bo ="clr-namespace:BusinessObject;assembly=BusinessObject"    mc:Ignorable="d"    d:DesignHeight="300" d:DesignWidth="400">    <Grid x:Name="LayoutRoot" Background="White">        <Grid.Resources>            <common:ObjectCollection x:Key="objCollection">                <bo:NodeItem Text="上海" Value="SH" Description="上海是一個繁華的都市"></bo:NodeItem>                <bo:NodeItem Text="深圳" Value="SZ" Description="中國的特區"></bo:NodeItem>                <bo:NodeItem Text="廣州" Value="GZ" Description="廣東人很喜歡煲湯"></bo:NodeItem>                <bo:NodeItem Text="北京" Value="BJ" Description="北京是中國的首都"></bo:NodeItem>            </common:ObjectCollection>            <!--資料項目模板-->            <DataTemplate x:Key="cboItemTemplate">                <Grid>                    <Grid.ColumnDefinitions>                        <ColumnDefinition></ColumnDefinition>                        <ColumnDefinition></ColumnDefinition>                    </Grid.ColumnDefinitions>                    <TextBlock Text="{Binding Value}" Grid.Column="0" TextAlignment="Left" ></TextBlock>                                       <TextBlock Text="{Binding Text}"  Grid.Column="1" TextAlignment="Right"></TextBlock>                </Grid>            </DataTemplate>            <!--選中時的模板(IsEditable=True時失效)-->            <DataTemplate x:Key="cboSelectionBoxTemplate">                <StackPanel Orientation="Horizontal">                    <TextBlock Text="{Binding Text}" Foreground="Red"/>                    <TextBlock Margin="3,0,3,0">/</TextBlock>                    <TextBlock Text="{Binding Value}"></TextBlock>                </StackPanel>            </DataTemplate>        </Grid.Resources>                <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">            <TextBlock>SelectedValue:</TextBlock>            <telerik:RadMaskedTextBox MaskedText="{Binding ElementName=radComboBox1, Path=SelectedValue, Mode=TwoWay}" MaskType="None" IsReadOnly="True"></telerik:RadMaskedTextBox>            <TextBlock Margin="0,10,0,0">SelectedItem.Value:</TextBlock>            <telerik:RadMaskedTextBox MaskedText="{Binding ElementName=radComboBox1, Path=SelectedItem.Value, Mode=TwoWay}" MaskType="None" IsReadOnly="True"></telerik:RadMaskedTextBox>            <TextBlock Margin="0,10,0,0">SelectedItem.Description:</TextBlock>            <telerik:RadMaskedTextBox  MaskedText="{Binding ElementName=radComboBox1, Path=SelectedItem.Description, Mode=TwoWay}" MaskType="None" IsReadOnly="True"></telerik:RadMaskedTextBox>            <TextBlock Margin="0,10,0,0">SelectedItem.Text:</TextBlock>            <telerik:RadMaskedTextBox  MaskedText="{Binding ElementName=radComboBox1, Path=SelectedItem.Text, Mode=TwoWay}" MaskType="None" IsReadOnly="True"></telerik:RadMaskedTextBox>            <!--說明-->            <!--TextSearchMode="Contains" 表明:文本搜尋時,只要包含關鍵字即認為匹配-->            <!--telerik:TextSearch.TextPath="Value" 表明:搜尋僅匹配Value屬性-->            <!--IsEditable="True" 允許編輯-->            <!--IsFilteringEnabled="True"  搜尋匹配時,自動過濾記錄項-->            <!--OpenDropDownOnFocus="True" 獲得焦點時,自動延伸-->            <!--ItemTemplate="{StaticResource cboItemTemplate}"  資料項目模板-->            <!--ItemsSource="{StaticResource objCollection}"  資料來源-->            <!--SelectedValuePath="Text" 選中值對應的實體欄位-->            <!--EmptyText="請選擇城市" 無選擇時顯示的預設文本-->            <!--ClearSelectionButtonContent="清空選擇" 清空選擇按鈕的文本-->            <!--ClearSelectionButtonVisibility="Visible" 顯示清空選擇按鈕-->            <telerik:RadComboBox Margin="0,10,0,0"  x:Name="radComboBox1" Width="180"                                       TextSearchMode="Contains"                                       telerik:TextSearch.TextPath="Value"                                       IsEditable="False"                                       IsFilteringEnabled="False"                                       OpenDropDownOnFocus="True"                                       ItemTemplate="{StaticResource cboItemTemplate}"                                       ItemsSource="{StaticResource objCollection}"                                                                            SelectedValuePath="Text"                                       ClearSelectionButtonContent="清空選擇"                                      ClearSelectionButtonVisibility="Visible"                                      EmptyText="請選擇城市(鍵入拼音簡稱即可)"                                      SelectionBoxTemplate="{StaticResource cboSelectionBoxTemplate}"                                 />        </StackPanel>    </Grid></UserControl>

後台代碼:木有,Binding的優勢再一次得到體現:)

RadComboBox在我看來有一個小小的缺憾:當設定為可編輯模式時(IsEditable="True"),選中項的模板(SelectionBoxTemplate)會失效(有一個近似hack的解決辦法:重寫ToString()方法,輸出自己希望的結果)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.