Попробуйте,
ваши $ data перекрываются, поэтому я просто преобразовал их в массив, чтобы все данные сохранялись в нем.
$price = $this->pricing->get_by($hc); //get from pricing
$mainData = array();
foreach ($price as $ps){
$promo = $this->discount->get_by($ps['key1'],$ps['key2']); //get from discount
if(!empty($promo)){
foreach ($promo as $k) {
if ($k['keyA']!='percent') {
$pricing = $ps['key3'] - $k['keyB'];
$data = array(
'room_code'=>$ps['key1'],
'price_code'=>$ps['key2'],
'price'=>$ps['key3'],
'discount_type'=>$k['keyA'],
'disc'=>$k['keyB'],
'finalprice'=>$pricing
);
}
elseif ($k['keyA']=='percent') {
$price = $ps['key3'] - ($ps['key3'] * $k['keyB']/100);
$data = array(
'room_code'=>$ps['key1'],
'price_code'=>$ps['key2'],
'price'=>$ps['key3'],
'discount_type'=>$k['keyA'],
'disc'=>$k['keyB'],
'finalprice'=>$pricing
);
}
array_push($mainData,$data);
}
}
}
Я часто использую FallbackValue
на привязке, чтобы иметь что-то для взгляда на то, в то время как я разрабатываю пользовательские элементы управления. Например:
<TextBlock Text={Binding Path=AverageValue, FallbackValue=99.99} />
Однако с тех пор FallbackValue
только применяется во время проектирования, это не могло бы быть соответствующим, если Вы хотите использовать FallbackValue
во время выполнения по другим причинам.
В Вашем примере Вы, возможно, должны были бы использовать TargetNullValue
, нет FallbackValue
поскольку выражение привязки, вероятно, будет null
как DataContext
null
во время проектирования.
FallBackValue
используется если Path
данный в привязке не существует, но поскольку никакой путь не указан, я принял бы DataContext
был бы затем оценен как null
.
<UserControl ... snip...>
<!-- Bind the textblock to whatever's in the DataContext -->
<TextBlock Text="{Binding TargetNullValue=Nothing to see}"></TextBlock>
</UserControl>
Также обратите внимание, что Платформа.NET, 3,5 SP1 необходимы как эти два дополнительных свойства, была добавлена в SP1.
Я не знаю о способе сделать это с редактором Visual Studio, но можно сделать это со Смешением Выражения.
Вот и статья, описывающая, как достигнуть этого.
Я действительно надеюсь, что MS объединяет функциональность Смешения и Visual Studio вместе, потому что наличие одного пакета делает одну вещь, и другой что-то еще немного глупо. Особенно, когда они от той же компании.
Разве в этом случае не лучший вариант, когда объект MultiValueConverter или ViewModel обрабатывает загрузку объекта и обновляет свойство зависимости за вас?