代码之家  ›  专栏  ›  技术社区  ›  akaphenom

GridView:NumericUpDown列更新第二列

  •  0
  • akaphenom  · 技术社区  · 15 年前

    网格。重新绑定() 它会造成混乱(屏幕锁定)。如果我在侧边添加一个按钮,并在设置所有值并进行调用后单击该按钮成员.refreshCandidatesGrid重新绑定后一切正常。

    1. 按下微调器(数字向上向下),让它触发一个事件(微调器中的每个刻度),我可以用它来更新百分比

    2. 当我离开旋转器场时,会有一个事件触发,不幸的是,LostFocus看起来是唯一有意义的事件,并且似乎在旋转器启动期间触发。。。

    XAML看起来像这样:

    <telerik:RadGridView x:Name="candidateGrid" DataContext="{Binding}">
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn Header="Score" IsFilterable="False"
                            DataMemberBinding="{Binding score, Mode=TwoWay}" Width="80" >
                        <telerik:GridViewDataColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding score}" HorizontalAlignment="Right"/>
                            </DataTemplate>
                        </telerik:GridViewDataColumn.CellTemplate>
                        <telerik:GridViewDataColumn.CellEditTemplate>
                            <DataTemplate>
                                <telerik:RadNumericUpDown Loaded="Editor_Loaded" Maximum="10000" UpdateValueEvent="PropertyChanged"  IsInteger="True"  Minimum="0" ValueChanged="score_ValueChanged"
                                        Value="{Binding score, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Width="60" O />
                            </DataTemplate>
                        </telerik:GridViewDataColumn.CellEditTemplate>
                    </telerik:GridViewDataColumn>
                    <telerik:GridViewDataColumn Header="Percent" IsReadOnly="True" IsFilterable="False" Width="70">
                        <telerik:GridViewDataColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding percent}" HorizontalAlignment="Right"/>
                            </DataTemplate>
                        </telerik:GridViewDataColumn.CellTemplate>
                    </telerik:GridViewDataColumn>
    

    namespace BV
    
    open System
    open System.Text.RegularExpressions
    open System.Windows ;
    open System.Windows.Controls;
    open System.Windows.Controls.Primitives ;
    open System.Windows.Media ;
    open Telerik.Windows.Controls;
    
    open Globals
    open RpcBV
    
    type Page() as this =    
        inherit UriUserControl("/BV;component/page.xaml", "page")
    
        // instance data
        let mutable brokers = RpcBV.getCandidates()
    
        // bound controls for add candidate
        let FE : FrameworkElement = (this.Content :?> FrameworkElement)
        let candidateGrid : RadGridView = FE ? candidateGrid
    
        do
            firm.ItemsSource <- RpcBV.getFirms()
            email.Background <- SolidColorBrush(Colors.Red)
            addBtn.IsEnabled <- false
            this.refreshCandidatesGrid() ;
    
        member this.refreshCandidatesGrid () =
            candidateGrid.ItemsSource <- brokers ;
            ()
    
    
    
        member this.calculatePercentages() =
            let totalScore = List.fold (fun acc (candidate: ScorableCandidate) -> acc + candidate.score) 0 brokers
    
            let scoreEm (candidate: ScorableCandidate) =
                 candidate.percent <- (float candidate.score) / float totalScore * 100.
    
            List.iter scoreEm <| brokers
    
        member this.addCadidate_Click (sender : obj) (args : RoutedEventArgs)  = 
            this.addCandidateFromForm()
            this.resetAddCandidateForm()
            this.refreshCandidatesGrid()
    
        member this.score_LostFocus (sender : obj) (args : RoutedEventArgs)  = 
            ()
    
        member this.score_ValueChanged (o : obj) (arg : RadRangeBaseValueChangedEventArgs) = 
            this.calculatePercentages()
    
        member this.Editor_Loaded (sender:obj) (args: RoutedEventArgs) =
            let ctrl = sender :?> Control;
            ctrl.Focus() |> ignore ;
            ()
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   kvb    15 年前

    如果希望属性更改立即反映在UI中,那么控件绑定到的类型可能应该实现 INotifyPropertyChanged 接口(或使用其他机制,如公开 DependencyProperties ). 你的定义是什么 ScorableCandidate